A herança no JavaScript é feita através de uma cadeia de protótipo: cada objeto possui outro objeto como seu protótipo, e o objeto herda as propriedades deste protótipo. Para cada objeto, existem três maneiras de acessar seu objeto de protótipo:
1 .__ Proto__. O objeto de protótipo do objeto pode ser acessado por meio de seu atributo __proto__. Esta propriedade é suportada apenas no Firefox, Safari e Chrome, e não no IE e na Opera.
2.Object.getProTypeOf (). Você pode passar o objeto como um parâmetro para o método Object.getProTypeOf () e, após a execução, ele retorna o objeto de protótipo do objeto. Este método é suportado apenas no padrão ECMAScript 5.
3.O.Constructor.prototype. Primeiro, obtenha a função construtora do objeto e depois acesse o objeto de protótipo acessando a propriedade do protótipo da função do construtor. O pré -requisito para usar esse método é que existe um atributo construtor apontando para o construtor no objeto.
Para determinar se existe uma relação de cadeia de protótipos entre dois objetos, você pode usar o método isprototype ():
A cópia do código é a seguinte:
var p = {x: 1};
var o = object.create (p);
console.log (p.isprototypeof (o)); // true
Para todos os objetos criados com literais, seu objeto de protótipo é objeto.Prototype (como um objeto especial, objeto.Prototype não possui um objeto de protótipo):
A cópia do código é a seguinte:
var x = {a: 18, b: 28};
console.log (x .__ proto __); // objeto {}
Para todos os objetos criados com o novo operador, seus objetos de protótipo são as propriedades do protótipo da função do construtor:
A cópia do código é a seguinte:
var x = {a: 18, b: 28};
teste de função (c) {
this.c = c;
}
Test.prototype = x;
var t = novo teste (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 {}
O processo de usar o novo operador para criar um objeto no JavaScript é o seguinte:
1. Crie um novo objeto vazio.
2. Aponte o atributo __proto__ desse objeto para o atributo protótipo da função do construtor.
3. Use este objeto como este parâmetro e execute a função do construtor.
Do processo de criação acima, podemos tirar uma conclusão de que todos os objetos construídos a partir da mesma função do construtor têm o atributo __proto__ (ou seja, seu objeto de protótipo) igual, ou seja, existe apenas um objeto de protótipo:
A cópia do código é a seguinte:
var t = novo teste (38);
var T2 = novo teste (68);
console.log (t === t2); // false
console.log (t .__ proto__ === t2 .__ Proto __); // true