Скажем, у меня есть следующий код:
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 не будет - поэтому существует разница в том, как они представлены внутри (по крайней мере, в Хром).