假设我有以下代码:
function One() {}
One.prototype.x = undefined;
function Two() {}
var o = new One();
var t = new Two();
o.x
并且t.x
都将评估为undefined
. o.hasOwnProperty('x')
并且t.hasOwnProperty('x')
都将返回false;也是如此propertyIsEnumerable
。两个问题:
- 有没有办法告诉 ox 已定义并设置为
undefined
? - 有任何理由吗?(两者在语义上应该是等价的吗?)
一个小警告:执行 (for propName in o) 循环将产生 'x' 作为字符串之一,而在 t 中执行不会 - 因此它们在内部的表示方式存在差异(至少在 Chrome 中)。