我在回调中遇到一些上下文问题。我用谷歌搜索并发现几个选项:
- 本机绑定 - 旧浏览器不支持
- jQuery 代理
- 下划线绑定
如果我不需要支持旧的浏览器,我肯定会使用本机绑定。应该注意这些之间有什么显着差异吗?
这些可以用作致电/申请的替代方法吗?
AFAIK,绑定和代理之间有细微的差别,如果您使用 jQuery,这可能会很重要。函数.原型.bindalways返回一个新的函数指针。如果尚未创建相同参数的代理,则 jQuery.proxy 仅返回新函数。并不是说你会want这样做,但是:
$(elm).on('click', doStuff.bind(thing)); //adds event handler
$(elm).off('click', doStuff.bind(thing)); //does not remove event handler as 2nd call of doStuff.bind(thing) always returns a new/different function
$(elm).on('click', $.proxy(doStuff, thing)); //adds handler
$(elm).off('click', $.proxy(doStuff, thing));//DOES remove handler, as a second call to $.proxy(doStuff, thing) is smart enough to know about similar use-cases
//Likewise, if you just passed 'thing.doStuff()' into the $.off() method, it would also work
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)