Una de las cosas que podemos hacer con los objetos en Javascript es crear propiedades de forma dinámica. Por ejemplo, podemos tener una definición de objeto persona con nombre, apellido y edad.
function persona(nombre,apellido,edad){
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
}
Sobre esta definición estática añadiremos una nueva propiedad de forma dinámica. Es decir, dinámicamente añadiremos la propiedad ciudad. Esto lo podríamos hacer de la siguiente forma:
var p1 = new persona("victor","cuervo","32");
persona.ciudad = "Avila";
El problema de utilizar esta forma de crear propiedades dinámicas en Javascript es que solo será para la instancia a la que se lo hemos añadido. Así, el siguiente código:
var p2 = new persona("isabel","herrero","40");
document.write(persona.ciudad);
Nos devolvería «undefined» ya que la propiedad ciudad solo se añadió para p1.
Si queremos crear una propiedad dinámica que sea aplicable a todas las instancias deberemos de utilizar la sentencia prototype de la siguiente forma:
var p1 = new persona("victor","cuervo","32");
persona.prototype.ciudad = "Avila";
Así el siguiente código:
var p2 = new persona("isabel","herrero","40");
document.write(persona.ciudad);
Ya devolverá «Avila» como respuesta.