次のコードがあるとします。
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 で) 表現される方法に違いがあります。