Tengo dificultades para entender la diferencia de los siguientes 2 conjuntos de códigos. El código original es de the famous Ninja tutorial y he simplificado un poco para mí.JavaScript: asignación de propiedad a través del prototipo
Pregunta: Creo que entiendo cómo funciona CodeA. Ninja.prototype.swung = false
está asignando una nueva propiedad en function Ninja()
, y ninjiaA.swung
se evalúa como falso debido a eso. Sin embargo, en CodeB, cuando declaramos el function Ninja()
con this.swung = true
al principio, la asignación posterior de Ninja.prototype.swung = false
no surte efecto, y ninjaA.swung
queda por evaluar en verdadero. No entiendo por qué esta asignación posterior no funciona en CodeB. ¿Podría alguien por favor aclararme sobre esto?
CodeA:
function Ninja(){}
Ninja.prototype.swung = false;
var ninjaA = new Ninja();
ninjaA.swung; //evaluates to false
CodeB:
function Ninja(){
this.swung = true;
}
Ninja.prototype.swung = false; //I'm expecting this changes swung to false,
//but it doesn't.
var ninjaA = new Ninja();
ninjaA.swung; //evaluates to true
Muchas gracias por adelantado.
+1 - muy bien presentado! –
Edité tu respuesta para usar la etiqueta 'pre'. Encuentro el color casi humorístico para restar valor a la calidad de la respuesta. – ChaosPandion
@ Dan - gracias :) @ ChaosPandion - gracias por el cambio, se ve mucho mejor ahora :) – Anurag