我在JavaScript中实现继承的方式如下例所示。我试图从子类调用父类的方法。我在网上看过很多例子,它们将父方法添加到原型中,并使用call或apply函数(但我的实现并没有这样做)。有没有办法进行这种类型的通话?
function classM() //parent class
{
this.myName = function()
{
console.log('parent');
}
}
function classEM ()
{
classM.call(this);
this.myName = function()
{
console.log('child');
//HOW DO I CALL myName() of the parent class?
}
}
classEM.prototype = Object.create(classM.prototype);
classEM.prototype.constructor = classEM;
var rm = new classEM();
rm.myName(); //should print child and then parent
答案 0 :(得分:2)
当您在this.myName = ...
中执行classEM
时,您正在将父级创建的旧myName
函数替换为classEM
中的函数。所以现在只存在一个功能。相反,您可以在myName
的原型中添加classM
函数并从中继承。
所以程序就像这样
function classM() {}
// Add myName to the parent
classM.prototype.myName = function() {
console.log('parent');
}
function classEM() {
this.myName = function() {
// Get the parent prototype object and invoke the myName in it.
Object.getPrototypeOf(this).myName();
console.log('child');
}
}
classEM.prototype = Object.create(classM.prototype);
classEM.prototype.constructor = classEM;
var rm = new classEM();
rm.myName();
<强>输出强>
parent
child