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

Using the $.proxy command in javascript/jquery

本文关键字:proxy 命令 javascript jquery      更新时间:2023-09-26

我有一段代码有点外来语法:

$.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指针绑定到函数,以便它在该上下文中操作。但我知道this并没有被引用到fooModel。所以我的问题是:什么是fooModel,它从哪里来?

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

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

$.proxy()所做的只是确保fooChange内部的thissetFoo内部的this相同