次のコードがあるとします。
function One() {}
One.prototype.x = undefined;
function Two() {}
var o = new One();
var t = new Two();
o.x
とt.x
は両方とも に評価されundefined
ます。どちらも false を返しますo.hasOwnProperty('x')
。t.hasOwnProperty('x')
についても同様ですpropertyIsEnumerable
。2 つの質問:
- ox が定義され、 に設定されていることを伝える方法はあります
undefined
か? - する理由はありますか?(2つは意味的に同等である必要がありますか?)
小さな注意点: (for propName in o) ループを実行すると、文字列の 1 つとして 'x' が生成されますが、t で実行すると生成されません。したがって、それらが内部で (少なくとも Chrome で) 表現される方法に違いがあります。