Todos los objetos en Javascript son dinámicos

Arrays, funciones, constructores, prototipos, … Todos son dinámicos y si no tenemos cuidado sufriremos las consecuencias.
Todos los objetos en javascript son dinámicos, lo que quiere decir que en cualquier momento podemos añadir propiedades y métodos a nuestro objeto:
[sourcecode language=»javascript» wraplines=»false»]
var persona = {
nombre : ‘persona’,
getNombre : function() {
return this.nombre;
}
};
// …
persona.telefono:’91 XXX XX XX’;
[/sourcecode]

Las variables de tipo objeto son referencias a un objeto, y se pasan a las funciones por referencia, no por valor. Esto hace que para copiar un objeto nos tengamos que inventar algún que otro truco.
Pero sobre todo, nos obliga a ser especialmente cuidadosos:
[sourcecode language=»javascript» wraplines=»false»]
var pedro = persona;
pedro.nombre = ‘pedro’;
console.log(pedro.nombre); // >>> ‘pedro’
// Pero, sorpresa !!
console.log(persona.nombre); // >>> ‘pedro’
[/sourcecode]
La variable pedro es una referencia al objeto persona, al cambiar la propiedad nombre en pedro estamos cambiando, en realidad, el objeto persona.

One Comment

Deja un comentario

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