Comprobar si una propiedad existe en un objeto JS

25 Dic 2010

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.

Más:

{2} Comentarios.

  1. Edward

    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

  2. Melvin Cava

    Muchas gracias me fue de mucha ayuda la explicación y el uso de este código en java script.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *