Skip to content

Instantly share code, notes, and snippets.

@pedrogk
Forked from egrueter-dev/js-classes-1.js
Last active July 2, 2016 22:53
Show Gist options
  • Save pedrogk/918c4ce124f1afcb5bc60d35171e1d92 to your computer and use it in GitHub Desktop.
Save pedrogk/918c4ce124f1afcb5bc60d35171e1d92 to your computer and use it in GitHub Desktop.
// Asumamos que tenemos un objeto o, con propiedades a y b:
// {a: 1, b: 2}
// o.[[Prototype]] tiene las propiedades b y c:
// {b: 3, c: 4}
// Finalmente, o.[[Prototype]].[[Prototype]] es null.
// Así que la cadena de prototipos queda como
// {a:1, b:2} ---> {b:3, c:4} ---> null
console.log(o.a); // 1
// Existe una propiedad 'a' en o? Sí, y su valor es 1.
console.log(o.b); // 2
// Existe una propiedad 'b' en o? Sí, y su valor es 2.
// El prototipo de o también tiene una propiedad 'b' pero no es visitada.
// Esto se conoce como "property shadowing".
console.log(o.c); // 4
// Existe una propiedad 'c' en o? No. Seguir la cadena de prototipo.
// Existe una propiedad 'c' en o.[[Prototype]]? Sí, y su valor es 4.
console.log(o.d); // undefined
// Existe una propiedad 'd' en o? No. Seguir la cadena de prototipo.
// Existe una propiedad 'd' en o.[[Prototype]]? No. Seguir la cadena de prototipo.
// o.[[Prototype]].[[Prototype]] es null, dejar de buscar.
// No se encontró la propiedad 'd' en la cadena, regresar undefined
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment