Una sinfonía en C#

Un pequeño aporte a la comunidad de habla hispana.

Tips de javascript: Por qué usar hasownproperty al iterar un objeto con for?

Hay una linda forma de obtener los miembros de un objeto cualquiera en Javascript de la que ya hablé, que básicamente es así:

var persona = {nombre: "leonardo", blog: "http://leomicheloni.com"};
for(var prop in persona){
	console.log(prop + " =  " + persona[prop]);
}

Y ocurre lo siguiente:

image

Perfecto, el problema es si por algún motivo agregamos funciones o propiedades a objetos de Javascript que pueden estar relacionados con nuestro objeto, es decir, imaginemos que queremos hacer una función en Object que retorne un string con cierto formato, así:

Object.prototype.format = function(){
	return "{"  + this + "}";
};

(de más está decir que es un ejemplo) lo que pasa ahora si corremos el código anterior es lo siguiente:

image

Esto puede pasar no sólo si agregamos funciones a Object sino que también si lo hacemos a String, o Array dependiendo del caso;

hasOwnProperty

Entonces la función hasOwnProperty nos permite saber si un miembro tal es del objeto en cuestión o de uno de sus prototipos, el ejemplo anterior sería así:

 

Object.prototype.format = function(){
	return "{"  + this + "}";
};

var persona = {nombre: "leonardo", blog: "http://leomicheloni.com"};
for(var prop in persona){
	if(persona.hasOwnProperty(prop)){
		console.log(prop + " =  " + persona[prop]);
	}
}

y santo remedio, ahora funciona.

image

Nos leemos!

Loading