gpt4 book ai didi

javascript - 对象中的闭包或处理程序?

转载 作者:行者123 更新时间:2023-11-30 09:02:08 25 4
gpt4 key购买 nike

我点击一个按钮,然后有一个处理程序。我一直不明白我是否应该使用闭包,或者让处理程序位于对象中。例如,在 HTML 中,

<button id="b">Go</button>
<button id="c">Go</button>

在 JavaScript 中(使用一些 jQuery),

var hdl=function(){
var hdl=function(){
foo+="foo"
console.log(foo)
},
foo=""
return hdl
}()
$("#b").click(hdl)

var obj={
bar:"",
hdl:function(){
this.bar+="bar"
console.log(this.bar)
}
}
var baz=function(){
obj.hdl()
}
$("#c").click(baz)

两者都有效。或者是否存在只能使用其中一种的情况?

最佳答案

事件处理程序始终是实现 EventListener 接口(interface)的函数或对象。我从来不明白有什么理由要使用 EventListener 对象而不是函数,所以我只看到使用过的函数,但您可以使用其中任何一个。

如果选择函数,则由您决定是希望函数是全局函数、匿名声明函数还是作为对象属性的函数。没有“正确”答案,因为这取决于您希望如何构建代码。

我的事件处理程序通常是匿名声明的函数,因为这通常是我构建事物的方式,通常不需要更多。 简单是最好的,所以你应该让它不要比需要的更复杂。

闭包只是一个函数体,它比函数的简单执行存活得更久,因为内部的一些其他函数引用仍然处于事件状态。是否使用闭包取决于您的需要和代码的结构。闭包可以是在不使用全局变量的情况下保持某些状态的非常方便的方法,但其他时候根本不需要它们。

关于javascript - 对象中的闭包或处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378258/

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