在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
中调用它的更多详细信息。