【发布时间】:2015-08-16 21:27:33
【问题描述】:
在 JavaScript 中,如何访问超类实例的属性?例如,我希望将超类实例的“prop”设置为“true”,但此代码创建并将子类实例的“prop”设置为“true”,而留下超类实例的“prop” " 为假:
var SuperClass = function() {
this.prop = true;
}
SuperClass.prototype.doStuff = function() {
if (this.prop) {
console.log('SuperClass does A.');
}
else {
console.log('SuperClass does B.');
}
}
SuperClass.prototype.load = function() {
this.prop = false;
}
SuperClass.prototype.setProp = function(val) {
this.prop = val;
}
function SubClass() {
SuperClass.call(this);
}
SubClass.prototype = Object.create(SuperClass.prototype);
SubClass.prototype.constructor = SubClass;
SubClass.prototype.doStuff = function() {
SuperClass.prototype.doStuff();
if (this.prop) {
console.log('SubClass does A.');
}
else {
console.log('SubClass does B.');
}
}
SubClass.prototype.load = function() {
SuperClass.prototype.load();
}
var anObject = new SubClass();
anObject.load();
anObject.setProp(true);
anObject.doStuff();
目前,输出是“SuperClass does B. SubClass does A.”,这不是预期的结果。如何正确设置“prop”的值,以便它们都执行“A”?我不想在子类的实例中创建新属性,我想访问超类实例中的现有属性。
谢谢!
此外,您可以从子类的构造函数访问超类的实例的属性吗?还是需要先实例化子类?
【问题讨论】:
标签: javascript class inheritance