Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 有没有办法在回调中保持此引用?_Javascript_Callback_Dom Events - Fatal编程技术网

Javascript 有没有办法在回调中保持此引用?

Javascript 有没有办法在回调中保持此引用?,javascript,callback,dom-events,Javascript,Callback,Dom Events,很难用语言来解释,但以下是我在代码中经常用到的: var self_reference; self_reference = this; $(selector).bind('event', function() { self_reference.someFunction(); }); 有没有一种不需要临时变量(此处为自引用)的方法来编写它?没有 此与上下文相关,并且此将是回调函数中的另一个对象。除非你把它复制到某个地方,否则它就会丢失。不,没有 此与上下文相关,并且此将是回调函数中的另一个

很难用语言来解释,但以下是我在代码中经常用到的:

var self_reference;
self_reference = this;

$(selector).bind('event', function() {
  self_reference.someFunction();
});
有没有一种不需要临时变量(此处为自引用)的方法来编写它?

没有

与上下文相关,并且
将是回调函数中的另一个对象。除非你把它复制到某个地方,否则它就会丢失。

不,没有


与上下文相关,并且
将是回调函数中的另一个对象。除非您将它复制到某个地方,否则它将丢失。

您可以查看jQuery函数

e、 g


您可以看看jQuery函数

e、 g

是功能的ES5扩展

您可以使用作为跨浏览器的备选方案,也可以使用

是功能的ES5扩展

您可以使用作为跨浏览器的备选方案,也可以使用


call
不好-必须在调用时传入该值,如果不将其复制到临时变量,该值将丢失。我假设jQuery的代理只是一个包装器,可以有效地生成一个临时变量。
call
不好——您必须在调用时传入该值,如果您不将其复制到临时变量,它就会丢失。我假设jQuery的代理只是一个包装器,可以有效地生成一个临时变量。
$.getJSON(url, $.proxy(function()
{
  // this has now got the desired context
}, this));
$(selector).bind('event', (function() {
  this.someFunction();
}).bind(this));
$(selector).bind('event', (_.bind(function() {
  this.someFunction();
}, this));

$(selector).bind('event', ($.proxy(function() {
  this.someFunction();
}, this));