【发布时间】:2014-05-29 10:40:10
【问题描述】:
我有一个带有“info”作为实例变量的“SuperClass”。 “SuperClass”具有函数“printInfo()”。 “printInfo()”需要访问实例变量“info”。 我想创建一个“子类”,它也有方法“printInfo()”。我想从“SubClass”的“printInfo()”中调用“SuperClass”的printInfo()。
SuperClass = function()
{
this.info = "I am superclass";
console.log("SuperClass:");
};
SuperClass.prototype.printInfo = function(that)
{
console.log("printing from superclass printInfo");
console.log(that.info);
};
SubClass = function(){};
SubClass.prototype = new SuperClass();
SubClass.prototype.printInfo = function()
{
console.log("calling superclass");
this.constructor.prototype.printInfo(this);
console.log("called superclass");
};
var sc = new SubClass();
sc.printInfo();
您可以看到我将“that”作为参数传递给 printInfo。如果没有“that”参数,“info”将打印为“undefined”。像下面的例子一样,当从“子类”的对象调用这个函数时,“this.info”是未定义的。
SuperClass.prototype.printInfo = function()
{
console.log("printing from superclass printInfo");
console.log(this.info);
};
在javascript中覆盖和调用超类方法的正确方法是什么,使函数能够访问类的实例变量?
【问题讨论】:
标签: javascript inheritance prototypal-inheritance