这是一个数组var arr = [1, 2, 3]
,我想实现一个方法来观察数组的变化。它喜欢
arr.on('change', function () {
// to do something
});
当我从数组中推送或删除数据时,它将自动触发“更改”事件。
可能吗?我该怎么做?
谢谢
这是一个数组var arr = [1, 2, 3]
,我想实现一个方法来观察数组的变化。它喜欢
arr.on('change', function () {
// to do something
});
当我从数组中推送或删除数据时,它将自动触发“更改”事件。
可能吗?我该怎么做?
谢谢
这是我脑海中浮现的第一个想法:
var arr = [1, 2, 3],
tmp = [].slice.apply(arr);
setInterval(function() {
if (arr.join() !== tmp.join()) {
console.log("Changed");
tmp = [].slice.apply(arr);
}
}, 10);
或原型版本:
Array.prototype.change = function(callback) {
var _this = this,
tmp = [].slice.apply(_this);
setInterval(function() {
if (_this.join() !== tmp.join()) {
callback();
tmp = [].slice.apply(_this);
}
}, 10);
};
var arr = [1, 2, 3];
arr.change(function() {
console.log("Changed!");
});
arr.push(4); // Changed!