La herencia en JavaScript se realiza a través de una cadena prototipo: cada objeto tiene otro objeto como prototipo, y el objeto hereda las propiedades de este prototipo. Para cada objeto, hay tres formas de acceder a su objeto prototipo:
1 .__ Proto__. Se puede acceder al objeto prototipo del objeto a través de su atributo __proto__. Esta propiedad es compatible solo en Firefox, Safari y Chrome, y no en IE y Opera.
2.Object.getPrototypeOf (). Puede pasar el objeto como un parámetro en el método Object.getPrototypeOf (), y después de la ejecución, devuelve el objeto prototipo del objeto. Este método solo se admite en el estándar ECMAScript 5.
3.O.Constructor.Prototype. Primero obtenga la función de constructor del objeto y luego acceda al objeto prototipo accediendo a la propiedad prototipo de la función de constructor. El requisito previo para usar este método es que hay un atributo de constructor que apunta al constructor en el objeto.
Para determinar si existe una relación prototipo de cadena entre dos objetos, puede usar el método ISprototype ():
La copia del código es la siguiente:
var p = {x: 1};
var o = object.create (p);
console.log (p.isprototipof (o)); // verdadero
Para todos los objetos creados con literales, su objeto prototipo es objeto.prototype (como objeto especial, el objeto.prototype no tiene objeto prototipo):
La copia del código es la siguiente:
var x = {a: 18, b: 28};
console.log (x .__ proto __); // objeto {}
Para todos los objetos creados con el nuevo operador, sus objetos prototipo son las propiedades prototipo de la función del constructor:
La copia del código es la siguiente:
var x = {a: 18, b: 28};
prueba de función (c) {
this.c = c;
}
Test.prototype = x;
var t = nueva prueba (38);
console.log (t); // objeto {c = 38, a = 18, b = 28}
console.log (t .__ proto __); // objeto {a = 18, b = 28}
console.log (t .__ proto __.__ proto __); // objeto {}
El proceso de usar el nuevo operador para crear un objeto en JavaScript es el siguiente:
1. Crea un nuevo objeto vacío.
2. Apunte el atributo __proto__ de este objeto al atributo prototipo de la función constructora.
3. Use este objeto como este parámetro y ejecute la función de constructor.
En el proceso de creación anterior, podemos sacar una conclusión de que todos los objetos construidos a partir de la misma función de constructor tienen el atributo __proto__ (es decir, su objeto prototipo) igual, es decir, solo hay un objeto prototipo:
La copia del código es la siguiente:
var t = nueva prueba (38);
var t2 = nueva prueba (68);
console.log (t === t2); // falso
console.log (t .__ proto__ === T2 .__ Proto __); // Verdadero