修改数组时的Javascript通知
我为我们当中的javascript开发人员准备了一些东西 我上了以下课程:修改数组时的Javascript通知,javascript,arrays,setter,getter,Javascript,Arrays,Setter,Getter,我为我们当中的javascript开发人员准备了一些东西 我上了以下课程: function MyClass(){ this.__defineSetter__("array", function(val){ alert("setter called"); this._array = val; }); this.__defineGetter__("array", function(){ alert("getter called
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调用(或类似的调用),重要的是在数组内容发生更改时接收通知
有人会这样做吗?这是怎么实现的?正如我们所知,警报(a.array[0]);
只会触发a.array的getter/setter,而a.array[0]
equalvar p=a.array;p[0]
这意味着你想要的是触发p[0]的getter/setter,而不仅仅是p的getter/setter。
因此,我们可以改变我们的想法:
将getter/setter添加到p的所有项
因此,我们可以这样做:
- 如果使用了
,将触发p的getter/setter,则判断p的所有项是否都有getter/setter,如果没有,则添加它p[6]=0
- 如果使用像
这样的函数,只需首先将getter/setter设置为该值p=[2,3,4]