Averiguar si una propiedad está 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.
Use the 100 answers in this short book to boost your confidence and skills to ace the interviews at your favorite companies like Twitter, Google and Netflix.
GET THE BOOK NOWA short book with 100 answers designed to boost your knowledge and help you ace the technical interview within a few days.
GET THE BOOK NOW