JavaScript es una voz orientada a objetos, es decir, todo es un objeto.
Entonces, ¿cómo generar un objeto? En el mundo de Java, los objetos se crean por instancias de clase. En términos de Layman, abstractan las cosas en un molde y usan este molde (clase) para producir objetos reales específicos (objetos).
Sin embargo, no hay concepto de clase en JS. Algunos son "prototipos", y los objetos se derivan de prototipos. En términos de laicos, en el mundo de JS, el "prototipo" no es un molde, sino un objeto concreto (objeto). Todos los objetos se derivan de otro objeto, y este objeto derivado es el llamado "objeto prototipo".
Hay tres tipos de objetos en JavaScript, 1 objeto creado por el usuario, 2 objeto constructor, 3 objeto prototipo
Cada uno de estos tres objetos tiene un atributo de propiedad -_proto__, que apunta al prototipo del objeto, y se puede rastrear al objeto. Prototipo desde el punto donde cualquier objeto lo sigue.
El constructor tiene un objeto prototipo, que apunta a un objeto prototipo. Cuando el objeto se crea a través de este constructor, el atributo __proto__ del objeto creado apuntará al atributo prototipo del constructor.
El objeto prototipo tiene una propiedad constructor que apunta a su constructor correspondiente.
Hablar es barato, ¡muéstrame el código! Echemos un vistazo al código:
var obj = {}; console.log (obj);Expandemos __proto__ para ver: son algunos métodos predeterminados.
Definitivamente sucederá que también hay un objeto __proto__ en este objeto __proto__. Como acabamos de decir, cada objeto tiene un atributo __proto__ que apunta a su objeto prototipo. Imprimamos el __proto__ en este __proto__:
console.log (obj .__ proto __.__ proto__); //-> nulo
El resultado es nulo, lo que indica que ha llegado el objeto prototipo de nivel superior. OBJ se define en los aparatos {}, y el objeto prototipo de OBJ es naturalmente el objeto de nivel superior de JS.
Veamos el código en un lado para fortalecer nuestra comprensión:
var parent = {name: "parent"}; var child = {name: "child", __proto__: parent}; var subchild = {name: "subChild", __proto__: child} console.log (subChild);