Comprobar si una propiedad existe en un objeto JS

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.

Acerca de Carlos Benítez

Programador Web y arquitecto Javascript. Fundador de www.etnassoft.com y OpenLibra, la Biblioteca Libre Online
Esta entrada fue publicada en Javascript y etiquetada , . Guarda el enlace permanente. Sígueme en Twitter

Últimos libros gratuitos añadidos a OpenLibra

{2} Comentarios.

  1. 02Feb2011/
    16:28 h /
    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. 11Oct2013/
    23:22 h /

    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 *

Licencia Creative Commons 3.0

®Copyright 2016. Cotenido web bajo licencia Creative Commons 3.0

Códigos bajo licencias MIT y GPL. Ver página de licencias para más información