[英]Javascript notification when modifying array
我為我們中間的javascript開發人員買了一些東西。
我上了以下課:
function MyClass(){
this.__defineSetter__("array", function(val){
alert("setter called");
this._array = val;
});
this.__defineGetter__("array", function(){
alert("getter called");
return this._array;
});
this._array = new Array();
};
現在,發生的是當我執行
var a = new MyClass();
a.array[0] = "MyString";
alert(a.array[0]);
getter被調用兩次(很好),但是setter永遠不會執行,因為實際的數組引用不會改變,只會改變內容(我猜是預期的行為)。 但是,在修改數組內容時也需要“通知”。 因此,電話
a.array[0] = "MyString";
還應該引起setter調用(或類似的操作,重要的是在數組內容已更改時接收通知。
有人對此嗎? 如何做到這一點?
眾所周知, alert(a.array[0]);
只會觸發a.array的getter / setter,而a.array[0]
等於var p = a.array; p[0]
var p = a.array; p[0]
意味着您想要的是觸發器p [0]的getter / setter,而不僅僅是p的getter / setter。 因此,我們可以改變主意:
將getter / setter添加到p的所有項目
因此,我們可以這樣做:
p[6] = 0
值,它將觸發p的getter / setter,請判斷p的所有項目是否都具有getter / setter。 p = [2,3,4]
的東西,只需首先將getter / setter設置為該值。 代碼是: Jsfiddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.