gpt4 book ai didi

javascript - 在 Javascript 中创建事件

转载 作者:行者123 更新时间:2023-11-29 18:31:50 24 4
gpt4 key购买 nike

如果我有一个用作事件订阅的函数列表,运行它们并使用 .call() 调用它们(下面的 B)或更直接(A )?代码如下。我能看到的唯一区别是使用 .call 您可以控制 this 的设置。除此之外还有什么区别吗?

    $(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
}
};
})();

最佳答案

不,没有其他区别。如果您采用第二种方法,则可以扩展 subscribe 以便“客户”可以指定要使用的上下文:

this.subscribe = function(func, context) {
events.push({func: func, context: context || this});
};

this.DoIt = function() {
var now = new Date();
alert("Doing Something Useful");
for (var i = 0; i < events.length; i++) {
events[i].func.call(events[i].context, now);
}
};

关于javascript - 在 Javascript 中创建事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7434126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com