Comprobar si una propiedad existe en un objeto JS
Una de las acciones más habituales cuando programamos Javascript orientado a objetos, es comprobar si en una propiedad existe en un objeto determinado.
Para ello, podemos utilizar alguna de las siguientes formas:
// Creamos un objeto var person = {}; person.name = 'Etnas'; // Asignamos propiedades person.company = 'EtnasSoft'; // Mostramos las propiedades: alert( person.name ); // 'Etnas'; alert( person.lastName ); // undefined |
Como person.lastName no ha sido definido podemos obtener un comportamiento no deseado en nuestro script. Para comprobar si existe la propiedad o no, podemos recurrir a un condicional:
if( person.lastName ) { // La propiedad existe } |
Sin embargo, este método no funciona correctamente cuando la propiedad existe, pero tiene un valor falsy ( false, «», null, undefined, 0, NaN ). Por lo que:
person.lastName = ''; if( person.lastName ) { // La propiedad existe, tiene un valor, pero no pasa el test. } |
Para solucionar este problema, tenemos que recurrir a uno de los métodos de Object: hasOwnProperty. Al crear un objeto, además de disponer de aquellos métodos que definamos, siempre hereda los propios de Object, por lo que podemos utilizarlo sin más:
if( person.hasOwnProperty('lastName') ) { // La propiedad existe, sea cual sea su valor } |
Mediante una comprobación de declaración implícita, podemos asignar un valor por defecto a nuestro método:
if ( person.hasOwnProperty( lastName ) || ( person.lastName = 'Soft' ) ) { alert(person.lastName); }; |
Con esto, conseguiremos que nuestras aplicaciones sean más robustas chequeando las propiedades de nuestros objetos antes de utilizarlas.
Oh! , muchas gracias por esta explicación =) me queda claro com usarlo con eso del lenght, supongo que cuando childnodes no existe como tal, es como decir que fuera == 0 en explorer, o == 1 en FF no?, lo intentaré, Gracias de verdad 😀 , excelente blog
Muchas gracias me fue de mucha ayuda la explicación y el uso de este código en java script.