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

时间:2011-08-30 19:48:39

标签: javascript

我使用“constructor chaining”来定义基类(超级)。

function Super () {
  this.member1 = 'superMember1';
  this.member2 = 'superMember2';
}

function Sub() {
  Super.call(this, arguments);
  this.member3 = 'subMember3';
  var t = this.hasOwnProperty("member1"); // gives me true, so I cannot use it
}

如何在我的Sub类或Super类中测试成员(1,2,3)是否已定义(属于)?

备注:`这[[name]]'不是这样的,因为我只能决定是否分配了一个值 - 而不是它是属于Super还是Sub。

如下面的Darhazer注释,构造函数链是复制成员,所以它可能很棘手。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以检查未定义的

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

答案 2 :(得分:0)

显然截至目前为止,不可能。因此将被关闭。

相关问题