2013-10-10 26 views
0

這裏是一個數組var arr = [1, 2, 3],我想實現一個方法來觀察數組的變化。 它喜歡如何在javascript中添加自定義事件陣列

arr.on('change', function() { 
    // to do something 
}); 

它將自動觸發的「變化」事件時,我推或從陣列刪除數據。

可能嗎?我該怎麼做?

謝謝

+0

不,這是不可能的。事件只發生在DOM元素上。 – Barmar

+1

在這裏看到http://stackoverflow.com/questions/5306843/javascript-attach-event-listener-to-array-for-push-event.It可能對你有用 – PSR

+0

我現在很困惑。 ** ** ** ** DOM ELement **? –

回答

0

就是這樣來到我腦海中的第一個想法:

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! 
相關問題