Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript绑定()与createDelegate()的比较_Javascript_Extjs - Fatal编程技术网

Javascript绑定()与createDelegate()的比较

Javascript绑定()与createDelegate()的比较,javascript,extjs,Javascript,Extjs,假设我想将一个成员函数作为回调传递 我应该使用什么来传递上下文绑定()或createDelegate() 我是说,这个: someObj.on('someEvent', this.someMethod.createDelegate(this)); 或者这个: someObj.on('someEvent', this.someMethod.bind(this)); 如果您谈论jQuery,请查看(第二个参数eventData) someObj: { someMethod: funct

假设我想将一个成员函数作为回调传递

我应该使用什么来传递上下文绑定()或createDelegate()

我是说,这个:

someObj.on('someEvent', this.someMethod.createDelegate(this));
或者这个:

someObj.on('someEvent', this.someMethod.bind(this));

如果您谈论jQuery,请查看(第二个参数
eventData

someObj:

{

    someMethod: function(eventData){
      var me = eventData.me;
    }

}

如果您谈论jQuery,请查看(第二个参数
eventData

someObj:

{

    someMethod: function(eventData){
      var me = eventData.me;
    }

}

bind
函数是ECMA-262(Javascript)第5版的最新添加


createDelegate
在任何版本中都不是本机JavaScript方法

所以最好使用
bind
。并用于未实现的浏览器


另外,如果你使用任何流行的框架,它可能有这样的方法。例如,jQuery有
$。proxy
静态方法也有同样的功能。

绑定
函数是ECMA-262(Javascript)第5版的最新添加


createDelegate
在任何版本中都不是本机JavaScript方法

所以最好使用
bind
。并用于未实现的浏览器


另外,如果你使用任何流行的框架,它可能有这样的方法。例如,jQuery有相同的
$.proxy
静态方法。

假设您使用的是旧版本的ExtJS(例如3.4.0),那么
bind
createDelegate
的功能几乎没有区别。最大的区别在于,
bind
不适用于较旧的浏览器


需要注意的一点是,
createDelegate
在较新版本的ExtJS中不可用,因为框架已经不再考虑更改本机对象原型。它已被
Ext.Function.bind
替换

*)本机
Function.prototype.bind
Ext.Function.bind
在如何处理绑定到函数的参数方面存在一些差异。不过,它看起来并不会影响您的代码。阅读文档以查看确切的差异

函数.prototype.bind的MDN链接

Function.prototype.createDelegate
(由ExtJS添加)的ExtJS 3.4.0链接

Ext.Function.bind的extjs4.0.7链接


假设您使用的是旧版本的ExtJS(例如3.4.0),那么
bind
createDelegate
的功能几乎没有区别。最大的区别在于,
bind
不适用于较旧的浏览器


需要注意的一点是,
createDelegate
在较新版本的ExtJS中不可用,因为框架已经不再考虑更改本机对象原型。它已被
Ext.Function.bind
替换

*)本机
Function.prototype.bind
Ext.Function.bind
在如何处理绑定到函数的参数方面存在一些差异。不过,它看起来并不影响您的代码。阅读文档以查看确切的差异

函数.prototype.bind的MDN链接

Function.prototype.createDelegate
(由ExtJS添加)的ExtJS 3.4.0链接

Ext.Function.bind的extjs4.0.7链接


您使用的是什么框架?你的意思是在jQuery中吗?
createDelegate
不是本机JavaScript方法。这取决于
createDelegate
的功能。如果你或任何访问者对来自AJAX.NET的Function.createDelagate感兴趣,请参阅这篇详细的文章:你在使用什么框架?您的意思是在jQuery中吗?
createDelegate
不是本机JavaScript方法。这取决于
createDelegate
的功能。如果您或任何访问者对AJAX.NET中的Function.createDelagate感兴趣,请参阅以下详细文章: