Скажем, у меня есть следующий код:
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. Два вопроса:
- Есть ли способ узнать, что o.x определено и установлено в
undefined? - Есть ли причина для этого? (должны ли они быть семантически эквивалентными?)
Небольшое предостережение: выполнение цикла (для propName in o) даст 'x' в качестве одной из строк, а выполнение этого в t - нет - так что есть разница в том, как они представлены внутри (по крайней мере, в Chrome).