2010-12-01 22 views
6

¿Está bien agregar propiedades a un objeto en tiempo de ejecución? Parece funcionar bien, pero ¿hay algún problema que deba tener en cuenta?¿Puedo agregar una propiedad dinámicamente en javascript?

Estoy usando una tercera parte del API de JavaScript que tiene una clase de objeto, que he instanciada y añadí mi propia propiedad para después de la creación de instancias, como el código de abajo:

Por ejemplo puedo hacer esto:

var Car = function (id, type) { 
    this.id = id; 
    this.type = type; 
}; 

var myCar = new Car(1,"Nissan"); 

// CAN I DO THIS: (needsWork not a property of object Car) 
myCar.needsWork = true; 
+1

Nota, la función de coches en el código no es una clase. Es una función constructora. Usted puede llamarlo "pseudo-clase". –

+0

¡Es bueno saber gracias! – capdragon

Respuesta

7

Sí, esto se llama aumento de objeto. Es una característica clave en JavaScript.

7

En realidad, hay dos maneras de hacerlo en JavaScript:

  1. agregar un método o propiedad a una instancia (este coche solamente)

    var myCar = new Car(1,"Nissan"); 
    myCar.needsWork = true; 
    
  2. agregue un método o propiedad al prototipo del automóvil (todos los automóviles, incluso los ya existentes)

    var myCar = new Car(1, "Nissan"); 
    var biggerCar = new Car(2, "Hummer"); 
    Car.prototype.needsWork = true; 
    alert(myCar.needsWork && biggerCar.needsWork 
         ? "We need work" 
         : "Something wrong here" 
    ); 
    

Referencia:

+0

Gracias fui consciente del prototipo, me preguntaba si la primera opción era correcta. Si pudiera marcar 2 respuestas, lo haría. Gracias por la info. – capdragon

+0

no hay problema, los votos positivos son mejores que los aceptados. Solo los votos ascendentes obtienen insignias de etiquetas :-) –

+0

P. Floyd Creo que es mejor adjuntar propiedades que no sean funcionales al objeto mismo ('this.needsWork = true' dentro del constructor) en lugar del prototipo del objeto. –

Cuestiones relacionadas