
Recomendações relacionadas: Tutorial de JavaScript
(Conceito) Cadeia de protótipos refere-se a uma lista vinculada composta de alguns protótipos por meio de ponteiros __proto__ Uma cadeia de protótipos pode servir objetos que desejam compartilhar dados na cadeia de protótipos e é usada. para implementar o mecanismo de herança JavaScript.
(Ponteiro de cadeia de protótipo) Ponteiros envolvidos na cadeia de protótipo:
função UMA() {
}
seja a1 = novo A()
seja a2 = novo A()
seja a3 = novo A()
// Essas linhas de código gerarão a cadeia de protótipos mostrada abaixo 
etc.
teste: ""
}
deixe a1 = Object.create(A)
deixe a2 = Object.create(A)
deixe a3 = Object.create(A)
// Estas linhas de código correspondem à cadeia de protótipos mostrada abaixo 
função UMA() {
}
seja a1 = novo A()
seja a2 = novo A()
seja a3 = novo A()
// Essas linhas de código gerarão a cadeia de protótipos mostrada abaixo 
A cadeia de protótipos envolvendo herança pode ser analisada usando um diagrama simplificado
// Use o modo de combinação parasita para implementar a função herdada C() {}
função B() {}
B.protótipo = novo C()
função A() {}
A.protótipo = novo B()
seja a1 = novo A()
seja a2 = novo A()
seja a3 = novo A() 
da cadeia de protótipos O ponto final da cadeia de protótipos é nulo, o que não se refere a um objeto protótipo
.A dinâmica do protótipo é explicada em detalhes em "Programação Orientada a Objetos", e envolve principalmente a reescrita e modificação do protótipo. Aqui estão alguns exemplos.
Exemplo 1—Prototype Dynamics
var A = function() {};
A.protótipo.n = 1;
var b = novo A();
A.protótipo = {
n: 2,
m: 3
}
var c = novo A();
console.log(bn); //1
console.log(bm);
console.log(cn);
console.log(cm); // 3 Exemplo 2 - Dinâmica do protótipo e cadeia inferior da cadeia de protótipos
var F = function() {};
Object.prototype.a = função() {
console.log('a');
};
Função.prototype.b = função() {
console.log('b');
}
varf = novo F();
fa(); // uma
fb(); // O atributo b não existe Fa();
Fb(); // bConsulte a primeira imagem no "Protótipo de diagrama de cadeia que não envolve herança" mencionado acima, você pode desenhar o seguinte problema de análise de diagrama de referência simplificado. 
Exemplo 3 — Dinâmica de protótipo e cadeia de protótipo
Função inferior da cadeia Pessoa(nome) {
este.nome = nome
}
deixe p = new Pessoa('Tom');
console.log(p.__proto__) // Pessoa.prototype
console.log(Person.__proto__) // Function.prototype Exemplo 4 — Dinâmica de protótipo e cadeia de protótipo Cadeia inferior
var foo = {}, F = function(){};
Object.prototype.a = 'valor a';
Function.prototype.b = 'valor b';
Objeto.protótipo = {
a: "valor a"
}
Função.prototype = {
b: "valor b"
}
console.log(foo.a);
console.log(foo.b); // indefinido
console.log(Fa); //valor a
console.log(Fb); // o valor b refere-se à primeira imagem no "Diagrama de cadeia de protótipo que não envolve herança" mencionado acima para desenhar o seguinte problema de análise de diagrama de referência simplificado. Como foo e F vinculam seus protótipos quando são declarados, eles obtêm o endereço do protótipo armazenado na memória heap através do ponteiro armazenado na memória da pilha. Primeiro, o protótipo é modificado. A operação de modificação modificará o protótipo na memória heap e F ainda poderá acessar o resultado modificado através do ponteiro da memória da pilha. A segunda etapa é reescrever o protótipo. JS é tudo "operações de transferência de valor". Depois de reescrever o protótipo, primeiro abra um novo espaço na memória heap para armazenar o novo protótipo e, em seguida, abra um novo espaço na memória da pilha. para armazenar o ponteiro na memória heap. Neste momento, como os ponteiros de memória da pilha mantidos por foo e F são diferentes dos novos ponteiros de memória da pilha, foo e F não podem acessar o protótipo reescrito. 
Recomendações relacionadas: Tutorial de aprendizagem de JavaScript
acima é uma explicação detalhada da cadeia de protótipos de JavaScript com imagens e textos. Para obter mais informações, preste atenção a outros artigos relacionados no site PHP chinês!