Decir que tengo el siguiente código:JavaScript - Identificar si una propiedad se define y establece en 'indefinido', o indefinido
function One() {}
One.prototype.x = undefined;
function Two() {}
var o = new One();
var t = new Two();
o.x
y t.x
será tanto evaluar a undefined
. o.hasOwnProperty('x')
y t.hasOwnProperty('x')
ambos devolverán falso; lo mismo vale para propertyIsEnumerable
. Dos preguntas:
- ¿Hay alguna forma de saber si o.x está definido y configurado en
undefined
? - ¿Alguna vez hay alguna razón para hacerlo? (Si ambos ser semánticamente equivalentes?)
Una pequeña advertencia: haciendo (por propName en O) bucle producirá 'x' como una de las cuerdas, mientras que hacerlo en T no - así que hay una diferencia en la forma en que están representados internamente (al menos en Chrome).
¿La palabra clave 'in' está en un estándar ECMAScript? Está implementado en Gecko y Webkit, pero no sé si siempre se puede confiar en que esté presente. – kpozin
@kpozin Puede usar 'in' de forma segura. Ver esta pregunta: http://stackoverflow.com/questions/2920765/javascript-in-operator-compatibility – chiborg