Существует большая разница между наследством JavaScript и стандартным наследством ООП. Prototype.superClass = C.SuperClass = P.Prototype;
Когда var c = new c (), c .__ proto__ = c.prototype;
Когда C посещает «переменные -члены», если __proto__ не может быть получен, вы отправитесь в C.Prototype, чтобы найти его. и другие распределяются во время определения (каждый объект используется). Modified будет передаваться всеми экземплярами объекта, которые нарушают первоначальное намерение дизайна класса.
Например:
Код кода копирования следующим образом:
'package'.j (function () {
'Class a'.j (function () {
jpublic ({{{{
V: {a: 1}
});
jprivate ({{
P: {a: 1}
});
jprotect ({{
x: {a: 1}
});
});
'Класс B расширяет a'.j (function () {
});
});
var b1 = new b ();
B1.VA = 5;
b1.xa = 5;
var b2 = new b ();
Console.log (b1.va) // Вывод как 5
Console.log (b1.xa) // Вывод как 5
Console.log (b2.va) // Выход также 5, не ожидается 1
Console.log (b2.xa) // Вывод как 1
console.log (b2.pa) // natabal
Как решить эту проблему?
A. «Переменная члена» (сама по себе является объектом), такой как V, не определяется на исходной цепочке, но вызывается в конструкторе. __proto__.
JS ++ предоставляет аналогичный метод, если «переменная члена» или «функция -член», определенная в JPrivate, выделяется на внешнем __proto__, и только этот экземпляр доступен.
B. «Переменная члена» только считывает только в цепочке прототипа (сама по себе является объектом)
Члены «переменных членов» (сами являются объектами), определяемыми C.Jpublic, просто читайте только участников, помните, что не назначаются, в противном случае он будет передаваться в различных случаях.