Так что я смотрю на некоторый код из «красноречивого Javascript», и он говорит, что причина наследования вы можете написать функцию, как:Для копирования прототипов требуется новый объект? Javascript
function clone(object) {
function OneShotConstructor() {}
OneShotConstructor.prototype = object;
return new OneShotConstructor();
}
и назвали бы это как так, если класс Terrarium
уже определены:
function LifeLikeTerrarium(plan) {
Terrarium.call(this, plan);
}
LifeLikeTerrarium.prototype = clone(Terrarium.prototype);
LifeLikeTerrarium.prototype.constructor;
Так что мой вопрос, почему мы должны создать OneShotConstructor
для того, чтобы скопировать его прототип. Почему бы нам просто не написали что-то вроде:
LifeLikeTerrarium.prototype = new Terrarium();
Будет ли это создавать какие-либо проблемы, является некорректным JavaScript? прототипичное наследование
Я также нашел аналогичную интерпретацию здесь: http://pivotallabs.com/users/pjaros/blog/articles/1368-javascript-constructors-prototypes-and-the-new-keyword под «И для моего последнего трюка. " Здесь метод называется create, и, по-видимому, причина в том, что нам не нужно указывать параметры для конструктора, но почему clone/create вызывает нас вокруг проблемы необходимости предоставления параметров конструктора? – jrbalsano