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

What is the correct Javascript bind syntax?

我找到了两种使用 Javascript 的本机 bind 的方法,因为我从 jQuery.proxy() 迁移出来:

this.thing.on(event, someHandler.bind(this))

this.thing.on(event, someHandler).bind(this)

据我所知,它们都做同样的事情,但我担心后者可能会导致 on()(或其位置的任何函数)出现问题。前一种语法是我从 $.proxy() 开始使用的语法,对我来说它似乎明确绑定到处理程序,所以我倾向于使用该语法。

这两行实际上是在做同样的事情吗?如果不是,哪个是更安全的选择?

第一种情况:

this.thing.on(event, someHandler.bind(this))

本机 bind 已调用,它将如您所愿地工作。

第二种情况,

this.thing.on(event, someHandler).bind(this)

jQuery on() 方法将 return 事件绑定到的 jQuery 对象,当您在 jQuery 对象,jquery bind() 方法被调用,它不执行本机绑定所做的事情。