У меня есть такой код:Как вызвать родительский метод из дочернего метода?
function A() {
this.hello = function() {
console.log("I'm A");
}
}
function B() {
this.hello = function() {
// I need to call A.hello here, like parent.hello();
B.prototype.hello(); // This is wrong, TypeError
console.log("I'm B");
}
}
B.prototype = new A();
var b = new B();
b.hello();
#=> TypeError: Cannot call method 'hello' of undefined
Я читал некоторые подобные вопросы здесь, но все они используют эту технику, они назначают метод к prototype
.
FaqPage.prototype.init = function(name, faq) {
BasePage.prototype.init.call(this, name);
this.faq = faq;
}
FaqPage.prototype.getFaq = function() {
return this.faq;
}
Но это не в моем случае. Мой prototype
является экземпляром родителя. Как можно вызвать родительский метод в моем случае? Или мне нужно реорганизовать мой код?
[Простой JavaScript Наследование] (http://ejohn.org/blog/simple-javascript-inheritance/) – Andreas
Как с помощью 'B.prototype = new A();' будет выполнять конструктор 'A', который может быть не таким, каким вы хотите, и может привести к нежелательным побочным эффектам. Вы можете использовать 'B.prototype = Object.Create (A.prototype);', чтобы получить тот же результат, но конструктор 'A' будет ** не ** выполняться. Конечно, вам нужно убедиться, что 'hello' является частью фактического' A.prototype', см. [** скрипка **] (http://jsfiddle.net/wZTy8/) – Nope