首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript中,如何访问超类实例的属性?

在JavaScript中,如何访问超类实例的属性?
EN

Stack Overflow用户
提问于 2015-08-16 21:27:33
回答 1查看 1.8K关注 0票数 4

在JavaScript中,如何访问超类实例的属性?例如,我希望超类实例的“支柱”设置为"true",但此代码创建子类实例的“支柱”并将其设置为"true",将超类实例的“支柱”设为false:

代码语言:javascript
复制
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做B. SubClass做A“,这不是期望的结果。我如何正确地设置“道具”的价值,使他们都做"A"?我不是试图在子类实例中创建一个新属性,而是要访问超类实例中的现有属性。

谢谢!

此外,您能从子类构造函数中访问超类的实例属性吗?还是需要先实例化子类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-16 21:33:32

代码语言:javascript
复制
SubClass.prototype.doStuff = function() {
    SuperClass.prototype.doStuff();

您没有为超类提供任何上下文,因此该函数没有对当前对象进行操作(即this将是错误的)。

相反,试着:

代码语言:javascript
复制
SubClass.prototype.doStuff = function() {
    SuperClass.prototype.doStuff.call(this);

这给了我想要的输出:

代码语言:javascript
复制
SuperClass does A.
SubClass does A.
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32040111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档