Detalle del libro
Ver Índice
Agradecimientos
John Resig
Bear Bibeault
Sobre los autores
Prefacio
Introducción
¿A quién va dirigido este libro?
¿Qué encontrará en este libro?
Convenciones
Código fuente
Sobre la ilustración de la cubierta
Parte I. Prepárese para el aprendizaje
1. Introducción para el ninja
Selección de bibliotecas JavaScript
Entender el lenguaje de JavaScript
Compatibilidad con varios navegadores
Buenas prácticas actuales
Buena práctica actual: Comprobación
Buena práctica actual: Análisis de la ejecución
Resumen
2. Armarse con la comprobación y la depuración
Código de depuración
Registro
Puntos de parada
Generación de pruebas
Entornos de comprobación
QUnit48
YUI Test
JsUnit49
Entornos de comprobación única más recientes
Fundamentos para crear un conjunto de pruebas
La aseveración
Grupos de comprobación
Comprobación asincrónica
Resumen
Parte II. Entrenamiento para el aprendiz
3. Las funciones son fundamentales
¿Qué implica la diferencia funcional?
¿Por qué es tan importante la naturaleza funcional de JavaScript?
Ordenar con un comparador
Declaraciones
Ámbito y funciones
Invocaciones
De los argumentos a los parámetros de las funciones
Invocación como función
Invocación como método
Invocación como constructor
Invocación con los métodos apply() y call()
Resumen
4. Utilizar las funciones
Funciones anónimas
Recursión
La recursión en funciones con nombre
Recursión con métodos
El problema del hurto de la referencia
Funciones con nombre en línea
La propiedad callee
Diversión con funciones como objetos
Almacenar funciones
Funciones memorizadas por sí mismas
Simular métodos de matriz
Listas de argumentos con longitud variable
Usar apply() para proporcionar argumentos variables
Sobrecarga de funciones
Comprobar funciones
Resumen
5. Cerrar con clausuras
Cómo funcionan las clausuras
Poner las clausuras en funcionamiento
Variables privadas
Devoluciones de llamada y temporizadores
Moldear contextos de función
Aplicar las funciones de forma parcial
Comportamiento básico de las funciones
Memorización
Envolver funciones
Funciones inmediatas
Ámbito temporal y variables privadas
Bucles
Envoltorio de biblioteca
Resumen
6. Orientación a objetos con prototipos
Instancias y prototipos
Instanciación de objetos
Tipificar objetos a través de los constructores
Herencia y cadena de prototipos
Prototipos DOM HTML
Obstáculos
Ampliar objetos
Ampliar números
Crear subclases de objetos nativos
Cuestiones de instanciación
Escribir código de clase
Comprobar la serialización de las funciones
Inicialización de subclases
Conservar supermétodos
Resumen
7. Expresiones regulares
¿Por qué son tan increíbles las expresiones regulares?
Recordatorio de las expresiones regulares
Explicación de las expresiones regulares
Términos y operadores
Compilar expresiones regulares
Capturar segmentos coincidentes
Realizar capturas simples
Combinaciones que usan las expresiones globales
Hacer referencia a capturas
Grupos no capturados
Sustituir usando funciones
Resolver problemas frecuentes con las expresiones regulares
Recortar una cadena
Combinar líneas nuevas
Unicode
Caracteres de escapada
Resumen
8. Hilos de ejecución y temporizadores
Cómo funcionan los temporizadores y el hilo de ejecución
Configurar y eliminar temporizadores
Ejecución del temporizador dentro del hilo de ejecución
Diferencias entre recesos e intervalos
Retraso mínimo del temporizador y fiabilidad
Procesamientos de computación compleja
Control del temporizador central
Comprobación asincrónica
Resumen
Parte III. Formación ninja
9. Alquimia ninja: Evaluación del código en tiempo de ejecución
Mecanismos de evaluación de código
Evaluación con el método eval()
Evaluación a través del constructor Function
Evaluación con temporizadores
Evaluación en el ámbito global
Evaluación segura de código
"Decompilación" de funciones
Evaluación de código en acción
Convertir JSON
Importar código del espacio de nombres
Compresión y ofuscación en JavaScript
Reescribir código dinámico
Etiquetas de comandos orientadas al aspecto
Metalenguajes y DSL
Resumen
10. Declaraciones With
Declaraciones with
Hacer referencia a propiedades dentro de un ámbito with
Asignaciones dentro de un ámbito with
Consideraciones de rendimiento
Ejemplos del mundo real
Importar código con espacio de nombres
Comprobación
Crear plantillas con "with"
Resumen
11. Desarrollar estrategias para varios navegadores
Elegir con qué navegadores seremos compatibles
Las cinco consideraciones principales de desarrollo
Errores y diferencias de navegador
Soluciones para los errores del navegador
Vivir con código externo y marcado
Pérdida de características
Regresiones
Estrategias de implementación
Soluciones seguras para varios navegadores
Detección de objetos
Simulación de características
Problemas de navegador sin posibilidad de prueba
Reducir las conjeturas
Resumen
12. Atributos, propiedades y CSS
Atributos y propiedades DOM
Escribir nombres compatibles con varios navegadores
Restricciones en la escritura de nombres
Diferencias entre XML y HTML
Comportamiento de atributos personalizados
Consideraciones de rendimiento
Problemas de los atributos para varios navegadores
Expansión DOM id/name
Normalización URL
El atributo style
El atributo type
El problema del índice de etiquetas (tabindex)
Nombres de nodos
Problemas de los atributos de estilo
¿Dónde están mis estilos?
Escribir el nombre de propiedades de estilo
La propiedad de estilo float
Conversión de valores de píxeles
Medir alto y ancho
Ver a través de la opacidad
Gestionar la rueda de color
Buscar estilos computados
Resumen
Parte IV. Formación maestra
13. Sobrevivir a los eventos
Vincular y desvincular controladores de eventos
El objeto Event
Gestión del navegador
Almacenar información asociada de forma central
Gestionar controladores de eventos
Desencadenar eventos
Eventos personalizados
Propagación y delegación
Delegar eventos a un ancestro
Abordar las deficiencias de navegador
El evento ready del documento
Resumen
14. Manipular el DOM
Introducir HTML en el DOM
Convertir HTML a DOM
Insertar en el documento
Ejecución de la secuencia de comandos
Clonar elementos
Eliminar elementos
Contenidos de texto
Configurar texto
Obtener el texto
Resumen
15. Motores de selectores CSS
API de Selectores W3C
Usar XPath para encontrar elementos
Implementación pura del DOM
Análisis sintáctico del selector
Encontrar los elementos
Filtrar el conjunto
Recursión y combinación
Motor de selector de abajo a arriba
Resumen
Índice alfabético
El desarrollo cada vez tiene más peso y es más importante en las nuevas tecnologías, como las procedentes de HTML5 o de las nuevas versiones de ECMAScript. Pero no tiene sentido profundizar en las nuevas tecnologías o emplear las bibliotecas más utilizadas si no conoce debidamente las características fundamentales del lenguaje JavaScript.
El desarrollo de navegadores y aplicaciones Web tienen un futuro brillante, proporcionando a los usuarios una enriquecedora experiencia y dinamismo. Pero estos fantásticos augurios se deben a desarrolladores Web con un sólido conocimiento de las partes más cruciales del lenguaje JavaScript, unido al deseo de escribir código elegante, rápido y dinámico que funcione en los diferentes navegadores, permitiendo crear aplicaciones Web que cobran vida.
JavaScript Ninja es una exclusiva guía para conocer los principios de JavaScript y que sus lectores puedan convertirse en verdaderos ninjas de este lenguaje.