如果我有一個用作事件訂閱的函數列表,是否可以通過它們運行並用.call()
(下面的B)或更直接地(A)調用它們?代碼如下。唯一的區別是我可以看到,使用.call
您可以控制設置爲this
的設置。除此之外是否還有其他區別?在Javascript中創建事件
$(function() {
eventRaiser.subscribe(function() { alert("Hello"); });
eventRaiser.subscribe(function(dt) { alert(dt.toString()); });
eventRaiser.DoIt();
});
var eventRaiser = new (function() {
var events = [];
this.subscribe = function(func) {
events.push(func);
};
this.DoIt = function() {
var now = new Date();
alert("Doing Something Useful");
for (var i = 0; i < events.length; i++) {
events[i](now); //A
events[i].call(this, now); //B
}
};
})();
這是一個很好的答案......謝謝! –
不客氣:) –