Ai đó có thể giải thích hành vi này cho tôi. Cho phép khai báo một lớp:Hành vi thừa kế 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);
}
});
Bây giờ tôi tạo ra hai đối tượng
var a = Ext.create('baseClass');
var b = Ext.create('baseClass');
Kiểm tra tài sản
a.setA(1);
b.setA(2);
a.sayA();
b.sayA();
này kết quả đầu ra
1
2
Mọi thứ đều OK, nhưng
a.add(1);
b.add(2);
a.sayAr();
b.sayAr();
Chúng tôi nhận được
[1,2]
[1,2]
này tôi không hiểu. Tại sao nó sử dụng các thuộc tính "a" riêng biệt nhưng một mảng "ar" cho cả hai đối tượng. "ar" không được khai báo là tĩnh! Tôi không hiểu gì cả.
Cảm ơn bạn, bạn có thể vui lòng làm rõ lý do tại sao nó hoạt động khác với chuỗi/số/bool – mik
Nó không phân biệt, chỉ là mảng/đối tượng là loại "tham chiếu". –
chuỗi/số/bool là các kiểu dữ liệu không thay đổi. Cách duy nhất để thao tác giá trị là gán lại một giá trị mới cho thuộc tính thích hợp, mà trong hầu hết các trường hợp sẽ áp dụng giá trị mới làm thành viên của cá thể cụ thể ('this.a =" mystring "'). Nguyên mẫu (được chia sẻ) sẽ vẫn bị ảnh hưởng. – mistaecko