什么是正确的Javascript绑定语法?

D G*_*D G 7 javascript jquery bind

bind当我从jQuery.proxy()迁移时,我发现了两种使用Javascript本机的方法:

this.thing.on(event, someHandler.bind(this))
Run Code Online (Sandbox Code Playgroud)

this.thing.on(event, someHandler).bind(this)
Run Code Online (Sandbox Code Playgroud)

据我所知,他们都做同样的事情,但我担心后者可能导致on()(或任何功能)的问题.前面的语法是我习惯的$.proxy(),对我来说看起来它是显式绑定到处理程序,所以我倾向于使用该语法.

这两条线实际上是一样的吗?如果没有,哪个更安全呢?

T J*_*T J 7

在第一种情况下:

this.thing.on(event, someHandler.bind(this))
Run Code Online (Sandbox Code Playgroud)

bind调用本机,它将按预期工作.

在第二种情况下,

this.thing.on(event, someHandler).bind(this)
Run Code Online (Sandbox Code Playgroud)

jQuery on()方法将返回绑定事件bind()的jQuery对象,当您调用jQuery对象时,bind()正在调用jquery 方法,并且它不执行native bind所做的操作.