
You Don't Know JS. this & Object Prototypes
Kyle Simpson
- Editorial
- O'Reilly
- Año
- 2014
- Páginas
- ~173
- Nivel
- Intermedio
De qué trata
Segundo libro de la primera edición de You Don't Know JS, publicado por O'Reilly en 2014, en el que Kyle Simpson explica a fondo la palabra clave this y el sistema de prototipos de JavaScript. Está basado en ES5, con un apéndice sobre las clases de ES6, y está dirigido a desarrolladores con experiencia que vienen de lenguajes orientados a objetos o que han usado «clases» en JavaScript sin entender lo que ocurre por debajo.
Los primeros capítulos desmontan los malentendidos habituales sobre this y presentan las cuatro reglas que determinan su valor según el sitio de llamada: binding por defecto, implícito, explícito (call, apply, bind) y con new, además de su orden de precedencia y el this léxico de las funciones flecha. Después estudia los objetos en detalle: tipos, propiedades y descriptores, inmutabilidad, getters y setters, existencia de propiedades e iteración. Luego compara la teoría de clases con lo que realmente hace JavaScript, analiza los mixins explícitos e implícitos como imitación de clases y explica la cadena de prototipos, [[Prototype]], los «constructores», Object.create y la herencia prototipal. El cierre propone la delegación de comportamiento y el estilo OLOO (objects linked to other objects) como alternativa más simple a la orientación a objetos basada en clases.
No construye aplicaciones ni trae ejercicios formales; se apoya en ejemplos de código y en comparaciones entre estilos (por ejemplo, el mismo widget o el mismo sistema de login escritos con clases y con OLOO). Es uno de los textos más claros para entender cómo funciona realmente la herencia en JavaScript. Conviene saber que su postura es crítica con class y que esa opinión no es compartida por todos; además es anterior a los campos privados y a otras mejoras de las clases. Se recomienda haber leído antes Scope & Closures.
- this
- Reglas de binding
- call, apply y bind
- Objetos y descriptores
- Getters y setters
- Mixins
- Cadena de prototipos
- Object.create
- Herencia prototipal
- Delegación de comportamiento
- OLOO
- Clases ES6
¿Cómo enseña?
Teórico
- ✗ Sin ejercicios
- ✗ Sin proyectos

