在javascript/jquery中使用$.proxy命令

在javascript/jquery中使用$.proxy命令,javascript,jquery,Javascript,Jquery,我有一段代码对我来说有点陌生的语法: $.widget('ui.filterFieldDisplay', $.ui.fieldDisplay, { setFoo: function() { . . . // added the next two lines var fooFieldWidgetOptions = fooFieldOptions.widgetOptions; fooFieldWidgetOptions['default'] = operator; var

我有一段代码对我来说有点陌生的语法:

$.widget('ui.filterFieldDisplay', $.ui.fieldDisplay, {
setFoo: function() {
  .
  .
  .
  // added the next two lines
  var fooFieldWidgetOptions = fooFieldOptions.widgetOptions;
  fooFieldWidgetOptions['default'] = operator;
  var fooChangeProxy = $.proxy(this.fooChange, this);
  fooFieldWidgetOptions.changeCallback = fooChangeProxy;
}

fooChange: function(fooModel) {
  fooModel.getValue('bar');
  .
  .
  .
}

});
在这种情况下,
fooModel
是否引用了
this
指针


我知道
$.proxy
方法将
this
指针绑定到函数,以便它在该上下文中运行。但是我知道,
这个
没有被引用到
fooModel
。所以我的问题是:
fooModel
是什么?它来自哪里?

否,
fooModel
将是作为第一个参数传递给
fooFieldWidgetOptions.changeCallback

fooFieldWidgetOptions.changeCallback("helloWorld!"); // fooModel will be `helloWorld!`

$.proxy()
所做的一切就是确保
这个
里面的
fooChange
这个
里面的
是一样的
setFoo

我想
就是你说那里有你遗漏的代码?是的,
是为了保密而省略的代码。因为,没有向
fooFieldWidgetOptions.changeCallback传递任何内容,这是否意味着
fooModel
未定义?是否将其设置为默认值?如果确实没有向其传递任何内容,则是的,您的问题中没有包含代码的这一部分,因此我不能确定。好的,在我的情况下,这是将变量传递到
fooChange
的唯一方法吗?还有别的办法吗?我编辑了我的代码,以包含有关如何在
setFoo
中调用它的更多详细信息。