¿Cómo puedo verificar si un objeto anónimo que se creó como tal?
var myObj = {
prop1: 'no',
prop2: function () { return false; }
}
¿De hecho tiene un prop2 definido?
prop2
siempre se definirá como una función, pero para algunos objetos no es obligatorio y no se definirá.
Intenté lo que se sugirió aquí: ¿Cómo determinar si el objeto JavaScript nativo tiene una propiedad / método? pero no creo que funcione para objetos anónimos.
javascript
Omar
fuente
fuente
Respuestas:
typeof myObj.prop2 === 'function';
le informará si la función está definida.fuente
if(typeof myObj[propoeryStr] === 'function') { ... }
Tu quieres
hasOwnProperty()
:Referencias: Mozilla , Microsoft , phrogz.net .
fuente
var my_obj = {'node1': document.createElement('div')};
a continuación,my_obj.node1.hasOwnProperty('cloneNode')
es falso. Sin embargo solución de Sean devolverá correctamente verdadera:typeof my_obj.node1.cloneNode === 'function'
3 opciones
typeof myObj.prop2 === 'function'
si el nombre de la propiedad no es dinámico / generadomyObj.hasOwnProperty('prop2')
si el nombre de la propiedad es dinámico, y solo verifique si es propiedad directa (no en la cadena del prototipo)'prop2' in myObj
si el nombre de la propiedad es dinámico, y verifique la cadena del prototipofuente
¿Qué quiere decir con un "objeto anónimo"?
myObj
no es anónimo ya que ha asignado un objeto literal a una variable. Puedes probar esto:fuente
Una forma de hacerlo debe ser
if (typeof myObj.prop1 != "undefined") {...}
fuente
Sé que esta es una pregunta antigua, pero me sorprende que todas las respuestas garanticen que el método existe y que es una función, cuando el OP solo quiere verificar la existencia. Para saber que es una función (como muchos han dicho) puede usar:
Pero también puede usar como condición:
O incluso:
Esto es así porque una función evalúa
true
yundefined
evalúa afalse
. Entonces, si sabe que si el miembro existe, puede ser solo una función, puede usar:O en una expresión:
fuente