有人可以向我解釋這種行爲。 讓我們聲明一個類: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);
}
});
現在,我創建了兩個對象
var a = Ext.create('baseClass');
var b = Ext.create('baseClass');
測試
a.setA(1);
b.setA(2);
a.sayA();
b.sayA();
此輸出
1
2
一切都OK了財產,但
a.add(1);
b.add(2);
a.sayAr();
b.sayAr();
我們得到
[1,2]
[1,2]
這個我不明白。爲什麼它爲兩個對象使用單獨的「a」屬性,而使用一個「ar」數組。 「ar」未被聲明爲靜態! 我不明白。
謝謝,請你澄清爲什麼它的作用與字符串/數字/布爾不同 – mik 2012-08-15 07:17:39
它沒有任何區別,它只是數組/對象是「引用」類型。 – 2012-08-15 07:19:50
字符串/數字/布爾是不可變的數據類型。操縱該值的唯一方法是將新值重新分配給相關屬性,在大多數情況下,該值將應用新值作爲特定實例('this.a =「mystring」')的成員。原型(共享)將保持不變。 – mistaecko 2012-08-15 07:40:58