¿Puede alguien explicarme este comportamiento? Permite declarar una clase:Comportamiento de herencia de ExtJs
Ext.define('baseClass',{
a:null,
ar:[],
add:function(v) {
this.ar.push(v);
},
sayAr:function() {
console.log(this.ar);
},
setA:function(v) {
this.a= v;
},
sayA:function() {
console.log(this.a);
}
});
Ahora puedo crear dos objetos
var a = Ext.create('baseClass');
var b = Ext.create('baseClass');
prueba la propiedad
a.setA(1);
b.setA(2);
a.sayA();
b.sayA();
Esto da salida a
1
2
Todo está bien, pero
a.add(1);
b.add(2);
a.sayAr();
b.sayAr();
Nos obtener
[1,2]
[1,2]
Esto no entiendo. ¿Por qué usa propiedades separadas "a" pero una matriz "ar" para ambos objetos? "ar" no está declarado como estático! No lo entiendo en absoluto.
Gracias, pueden aclarar por qué funciona diferente con strings/numbers/bools – mik
No hace ninguna distinción, es solo que las matrices/objetos son tipos de "referencia". –
cadenas/números/bools son tipos de datos inmutables. La única forma de manipular el valor es volver a asignar un nuevo valor a la propiedad relevante, que en la mayoría de los casos aplicará el nuevo valor como miembro de la instancia específica ('this.a =" mystring "'). El prototipo (compartido) permanecerá intacto. – mistaecko