Я пытаюсь реализовать пример, который я нашел в наследовании JavaScript, и дочерний объект, похоже, не строится так, как ожидалось. В приведенном ниже примере создание экземпляра Jill не возвращает объект Jill, и методы из дочернего элемента или родителя не могут быть вызваны.JavaScript-конструктор не выполнен?
var Person = function() {
this.name = "unnamed";
}
Person.prototype.sayName = function() {
console.log("My name is " + this.name);
}
var Jill = function() {
var jill = function() {
Person.call(this);
this.name = "Jill";
};
jill.prototype = Object.create(Person.prototype);
jill.prototype.constructor = jill;
jill.prototype.expressJoy = function() {
console.log("Huray!");
};
return jill;
}
var jill = new Jill();
console.log(jill instanceof Jill); // false
jill.expressJoy(); // error, is not a function
jill.sayName(); // error, seen if comment out previous line
'jill' - это фактический конструктор. Не знаю, почему вы завернули это в функцию 'Jill'. Может быть, это должно быть IIFE? – Bergi
Yep, @Bergi - похоже, что у вас была правильная идея. – scader