Javascript bind() vs createDelegate()
Javascript bind() vs createDelegate()
想象一下,我想将一个成员函数作为回调传递。
我应该用什么来传递上下文-bind()或createDelegate()?
我的意思是,这个:
someObj.on('someEvent', this.someMethod.createDelegate(this));
或者这个:
someObj.on('someEvent', this.someMethod.bind(this));
bind
函数是ECMA-262(Javascript)第5版的最新添加;
createDelegate
在任何版本中都不是本机JavaScript方法。
所以最好使用bind
。并在浏览器未实现的地方使用polyfill。
附言:如果你使用任何一个流行的框架,它可能有这样的方法。例如,jQuery有$.proxy
静态方法,它们也做同样的事情。
假设您使用的是旧版本的ExtJS(例如3.4.0),bind
和createDelegate
的功能几乎没有区别。最大的区别在于bind
不适用于旧版本的浏览器。
需要注意的一点是,createDelegate
在较新版本的ExtJS中不可用,因为该框架已经放弃了更改本地对象原型的想法。它已被Ext.Function.bind
取代。
*)本机Function.prototype.bind
和Ext.Function.bind
在处理绑定到函数的参数方面存在一些差异。不过,它看起来并不会影响您的代码。阅读文档以查看确切的差异。
Function.prototype.bind
:的MDN链接
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
用于Function.prototype.createDelegate
的ExtJS 3.4.0链接(由ExtJS添加)
http://docs.sencha.com/extjs/3.4.0/source/Ext.html#Function-方法createDelegate
用于Ext.Function.bind
的ExtJS 4.0.7链接
http://docs-origin.sencha.com/extjs/4.0.7/source/Function2.html#Ext-函数方法绑定
如果您谈论jQuery,请查看文档(第二个参数eventData
)
someObj.on('someEvent', {me: this}, this.someMethod);
someObj:
{
someMethod: function(eventData){
var me = eventData.me;
}
}
- setInteval vs setTimeout
- $(this).prop('property') vs. this.property
- Js.erb VS按钮标记-不'不起作用.为什么?
- reactjs this.refs vs document.getElementById
- Performance: NaCl vs Emscripten
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- Advantages to DOMParser vs template & innerHTML
- JavaScript-===vs===运算符性能
- 开发第三方小部件-Angular vs jQuery vs普通的旧JS
- PhantomJS(vs nightwatch.js)设置cookie错误
- Javascript events: window.event vs argument reference (funct
- 需要确认我对Servlet vs RESTful网页的理解's的差异
- "#"keyCode=222 vs 51(Chrome与Android版Chrome)-为什么有区别
- .notion vs.[]notation |插入到文本对象中
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- 没有框架/DLL的VS Web应用程序项目
- Eval vs execscript
- VS代码:在<脚本>标签
- Object.prototype.hasOwnProperty.call() vs Object.prototype.h
- Javascript bind() vs createDelegate()