
Рекомендации по теме: Учебное пособие по JavaScript
(Концепция) Цепочка прототипов относится к связанному списку, состоящему из некоторых прототипов через указатели __proto__. Цепочка прототипов может обслуживать объекты, которые хотят совместно использовать данные в цепочке прототипов, и используется. реализовать механизм наследования JavaScript.
(Указатель цепочки прототипов) Указатели, участвующие в цепочке прототипов:
функция А() {
}
пусть a1 = новый A()
пусть a2 = новый A()
пусть a3 = новый A()
// Эти строки кода сгенерируют цепочку прототипов, показанную ниже 
let A = {
тест: ""
}
пусть a1 = Object.create(A)
пусть a2 = Object.create(A)
пусть a3 = Object.create(A)
// Эти строки кода соответствуют цепочке прототипов, показанной ниже 
функция А() {
}
пусть a1 = новый A()
пусть a2 = новый A()
пусть a3 = новый A()
// Эти строки кода сгенерируют цепочку прототипов, показанную ниже 
Цепочку прототипов, включающую наследование, можно проанализировать с помощью упрощенной диаграммы
// Используйте режим паразитной комбинации для реализации унаследованной функции C() {}
функция Б() {}
Б.прототип = новый C()
функция А() {}
A.prototype = новый B()
пусть a1 = новый A()
пусть a2 = новый A()
пусть a3 = новый A() 
цепочки прототипов Конечная точка цепочки прототипов равна нулю, что не относится к объекту-прототипу
.Динамика прототипа подробно описана в разделе «Объектно-ориентированное программирование». и в основном это связано с переписыванием и модификацией прототипа. Вот несколько примеров.
Пример 1. Динамика прототипа
var A = function() {};
А.прототип.n = 1;
вар б = новый A();
А.прототип = {
н: 2,
м: 3
}
вар c = новый A();
консоль.журнал(бн); // 1
console.log(bm); // не определено
консоль.журнал(сп); // 2
console.log(cm); // 3 Пример 2. Динамика прототипа и нижней цепочки цепочки прототипов
var F = function() {};
Object.prototype.a = функция() {
console.log('а');
};
Function.prototype.b = function() {
console.log('b');
}
вар f = новый F();
фа(); // а
fb(); // Атрибут b не существует Fa(); // a
Fb(); // bОбратившись к первому изображению в упомянутой выше «Цепочковой диаграмме прототипа, не предполагающей наследование», вы можете нарисовать следующую упрощенную задачу анализа эталонной диаграммы. 
Пример 3. Динамика прототипа и нижняя цепочка цепочки прототипов.
Функция Person(name) {
это.имя = имя
}
пусть p = новый человек('Том');
console.log(p.__proto__) // Person.prototype
console.log(Person.__proto__) // Function.prototype Пример 4. Динамика прототипа и нижняя цепочка цепочки прототипов
var foo = {}, F = function(){};
Object.prototype.a = 'значение a';
Function.prototype.b = 'значение b';
Объект.прототип = {
а: «значение а»
}
Функция.прототип = {
б: «значение б»
}
console.log(foo.a); // значение a
console.log(foo.b); // не определено
console.log(Fa); // значение a
console.log(Fb); // значение b относится к первому изображению в упомянутой выше «Цепной диаграмме прототипа, не предполагающей наследование», чтобы нарисовать следующую упрощенную задачу анализа справочной диаграммы. Поскольку foo и F связывают свои прототипы при их объявлении, они получают адрес прототипа, хранящегося в динамической памяти, через указатель, хранящийся в памяти стека. Сначала изменяется прототип. Операция модификации изменит прототип в куче памяти foo, и F по-прежнему сможет получить доступ к измененному результату через указатель стековой памяти. Второй шаг — переписать прототип. JS — это все «операции передачи значений». После переписывания прототипа сначала откройте новое пространство в куче памяти для хранения нового прототипа, а затем откройте новое пространство в памяти стека. для сохранения указателя на указатель кучи. В настоящее время, поскольку указатели памяти стека, хранящиеся в foo и F, отличаются от новых указателей памяти стека, foo и F не могут получить доступ к переписанному прототипу. 
Рекомендации по теме: Учебное пособие по изучению JavaScript.
Выше приведено подробное объяснение цепочки прототипов JavaScript с изображениями и текстами. Для получения дополнительной информации обратите внимание на другие соответствующие статьи на китайском веб-сайте PHP.