10

Averiguar si una propiedad está en un Objeto

Estas son formas de comprobar si una propiedad está presente en un objeto.

Cuando usted tiene que comprobar si una propiedad está presente en un object, es probable que esté haciendo algo como esto:

var myObject = {
  name: '@tips_js'
};

if (myObject.name) { ... }

Eso está bien, pero hay que saber que existen dos formas nativas para este tipo de cosas, el in operator y Object.hasOwnProperty. Cada objeto descendiente de Object.

Observe esta gran diferencia

var myObject = {
  name: '@tips_js'
};

myObject.hasOwnProperty('name'); // true
'name' in myObject; // true

myObject.hasOwnProperty('valueOf'); // false, valueOf is inherited from the prototype chain
'valueOf' in myObject; // true

Ambos difieren en la profundidad a la que se comprueban las propiedades. En otras palabras, hasOwnProperty sólo devolverá verdadero si la clave está disponible en ese objeto directamente. Sin embargo, el operador in no discrimina entre las propiedades creadas en un objeto y las propiedades heredadas de la cadena de prototipo.

Aqui otro ejemplo:

var myFunc = function() {
  this.name = '@tips_js';
};
myFunc.prototype.age = '10 days';

var user = new myFunc();

user.hasOwnProperty('name'); // true
user.hasOwnProperty('age'); // false, because age is from the prototype chain

Mire este link live examples here!

Recomiendo que lean this discussion acerca de los errores comunes el momento del control de la existencia de una propiedad en objetos.