gpt4 book ai didi

javascript - OO JavaScript 调用父方法

转载 作者:数据小太阳 更新时间:2023-10-29 05:55:21 24 4
gpt4 key购买 nike

我一直在努力掌握 OO JavaScript 并创建了一个简单的示例。

function BasePage(name) {
this.init(name);
}

BasePage.prototype = {
init: function(name) {
this.name = name;
},
getName: function() {
return this.name;
}
}

function FaqPage (name, faq) {
this.init(name, faq);
}

FaqPage.prototype = new BasePage();

FaqPage.prototype = {
init: function(name, faq) {
BasePage.prototype.init.call(this, name);
this.faq = faq;
},
getFaq: function() {
return this.faq;
}
}

var faqPage = new FaqPage('Faq Page', 'Faq');

var text = faqPage.getName() + ' ' + faqPage.getFaq();
$('body').text(text);

运行此结果会产生以下消息:

Uncaught TypeError: Object #<Object> has no method 'getName'

我想知道的是如何调用方法getName()在父类(super class)中,而不必在子类中重写和调用它?

另外,如果我认为这种方法不好/好。

最佳答案

发生该错误是因为即使您已将 FaqPage 的原型(prototype)设置为 BasePage 的实例,您的下一行会立即覆盖它。所以 FaqPage 没有继承自 BasePage。向 FaqPage 的原型(prototype)添加属性/方法,而不是再次定义它:

FaqPage.prototype.init = function(name, faq) {
BasePage.prototype.init.call(this, name);
this.faq = faq;
}
FaqPage.prototype.getFaq = function() {
return this.faq;
}

关于javascript - OO JavaScript 调用父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com