如何在javascript中的数组上添加自定义事件

如何在javascript中的数组上添加自定义事件,javascript,jquery,Javascript,Jquery,这里是一个数组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

这里是一个数组
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!

不,不可能。事件只发生在DOM元素上。请参见此处,这可能对我现在感到困惑的uI有用。数组是DOM元素吗?