решаемыеJS Прототип цепь
Назначения прототипов на самый день была перезапись моих предыдущих заявлений. Спасибо Гуффа за быстрый ответ.
Я просматривал и добрый нахожу хороший ответ, моды, если это док, извините.
К коду .. У меня есть три функции: одна, две и три соответственно. Я бы хотел, чтобы три наследовали от двух и двух от одного. Прототип из трех человек должен полностью вернуться к одному, что и делает. Я могу вызывать методы от одного, пока я в трех экземплярах. Но я не могу вызывать методы из двух.
Вот пример.
function one() {
this.version = 1;
};
one.prototype.one = function() {
return 'I live on the one class';
};
function two() { // extends one
this.version = 2;
};
two.prototype.two = function() {
return 'I live on the two class';
};
function three() { // extends two
this.version = 3;
};
three.prototype.three = function() {
return 'I live on the three class';
};
two.prototype = Object.create(one.prototype);
three.prototype = Object.create(two.prototype);
var x = new three();
x.one // -> 'I live on the one class!'
x.two // -> undefined
x.three // -> undefined
Когда я вызываю x.one, я получаю ожидаемый вывод 'i live on one class'. Но x.two не определено. Когда я смотрю на цепочку прототипов, вообще нет методов/свойств в цепочке. Доступен только прототип из одного.
Мой мозг плачет.
EDIT Я еще не пробовал x.three, но он также не определен. Возможно, способ, которым я наследую, переписывать прототипы вместо совместного использования? Хотя, если это была проблема, я чувствую, что у меня будет доступ к двум, а не к одному. Я не уверен, почему у меня есть доступ к корневому классу, но между ними нет ни одного экземпляра, который был вызван. Это как если бы три были просто ссылкой на один.
За любовь бога, пожалуйста, не используйте document.write() в примерах. Это именно то, что делает w3school так много. Мы в основном избавились от него, не вернем его: P –
Ах, да, это имеет смысл. Я по существу стирал прототипы, прежде чем у них была возможность увидеть дневной свет. И один из них был доступен, потому что я никогда не переписывал его прототип. Отлично, спасибо. –