Я читаю книгу на JavaScript-скрипте ООП и застрял на одном из примеров.путаница прототипа: свойство родительского прототипа, затронутое прототипом ребенка
В первой версии примерного кода создается новый экземпляр функции-конструктора Shape
и вызывается метод toString
. Метод toString
возвращает «Треугольник», который является свойством name
прототипа Triangle
, хотя форма «Форма» должна быть name
прототипом Shape
.
Во второй версии примерного кода метод toString
возвращает «Форма», как предполагалось. Мне интересно, как изменения во второй версии кода имели какое-то значение, потому что это похоже на обе версии кода примера, прототип Triangle
содержит ссылку на прототип Shape
, поэтому свойство name
прототипа Shape
будет по-прежнему будет обновлен до "треугольника" из-за Triangle.prototype.name = "Triangle";
первой версии: jsfiddle
второй версии: jsfiddle
Если F() ссылается на ссылки Shape.prototype и Triangle.prototype F(), не ссылается ли ссылка Triangle.prototype на Shape.prototype на транзитивное свойство? – user701510
новый F() и F.prototype отличается. –