确定成员是否在(Javascript)超类中定义

确定成员是否在(Javascript)超类中定义,javascript,Javascript,我正在使用“”定义基类(Super) 如何测试成员(1,2,3)是在我的子类中定义的(属于)还是在超类中定义的(属于) 备注:`this[“name”]”不是这样,因为我只能决定是否分配了一个值,而不是它是否属于Super或Sub 如下面的注释所示,构造函数链接复制了成员,因此这可能很棘手。您可以检查未定义的 if (typeof this.member1 == "undefined") { //undefined } 使用hasOwnProperty()检查成员是否在当前类中定义。如

我正在使用“”定义基类(Super)

如何测试成员(1,2,3)是在我的子类中定义的(属于)还是在超类中定义的(属于)

备注:`this[“name”]”不是这样,因为我只能决定是否分配了一个值,而不是它是否属于Super或Sub


如下面的注释所示,构造函数链接复制了成员,因此这可能很棘手。

您可以检查未定义的

if (typeof this.member1 == "undefined") {
    //undefined
}

使用hasOwnProperty()检查成员是否在当前类中定义。如果没有-显然它是由超类定义的。

显然到目前为止,答案是不可能的。因此将被关闭。

这不起作用,因为如果值在Super中有时未定义(未分配值),则会失败。作为记录,我认为您不应该让值未分配,而是将它们设置为
null
。然而,如果您需要这样做,@Darhazer的答案应该是有效的。不幸的是,这不起作用,因为这个.hasOwnProperty(“member1”);有没有人测试过这个,因为我很感激这个答案,但它不起作用,已经得到了2票。所以我要么做错了什么,要么答案不适用于我的场景。@Horst Walter嗯,在构造函数链接主题中似乎有很好的记录,属性被复制,hasOwnProperty返回true;这只适用于基于原型的继承:(是的,我同意这一点,这就是为什么我问是否有某种方法可以找到这一点-但我可以在问题中明确地概述这一点,很好的提示。而且我继承-在现实世界的代码中-从>1类,所以我需要这个链接。不过,我感谢您的反馈。
if (typeof this.member1 == "undefined") {
    //undefined
}