如何在简单的jquery函数中使用'this'?

时间:2010-06-28 20:14:51

标签: javascript jquery jquery-plugins

我无法理解这段代码:

$.functionone = function(){
  function setOptions(newOptions){
      ...
  }
  this.setOptions = setOptions;
}

在'this.setOptions'中添加'this'是为了什么?我理解它引用了函数setOptions,但是添加'this'会使函数被调用吗?我知道这是指DOM元素,但是在这个特定场景中有什么意义。感谢。

3 个答案:

答案 0 :(得分:3)

这将只是公开 functionone范围内的函数,成为$对象的属性。

例如:

$.functionone = function(){

  function setOptions(newOptions){
    //...
  }
  this.setOptions = setOptions;
};

typeof $.setOptions; // "undefined", it doesn't exist
$.functionone();
typeof $.setOptions; // "function"

当您进行函数调用时,将隐式设置JavaScript上的this值。

如果函数绑定为对象的属性(如$.functionone),则this值将引用基础对象$ in你的例子。)

这不是那么有用的IMO,它相当于:

$.functionone = function(){
  this.setOptions = function (newOptions) {
    //...
  };
};

最后,当您调用functionone时,相当于:

$.setOptions = function (newOptions) {
  //..
};

不同之处在于函数未命名,这对调试很有用。

在扩展this对象时,使用jQuery插件的jQuery.fn值更常见,在这种情况下,this值指的是包含匹配元素的jQuery对象,而不是jQuery构造函数本身。

答案 1 :(得分:1)

代码创建一个函数并将其添加为DOM元素的“setOptions”属性。

据推测,代码的其他部分将知道在DOM元素上查找“setOptions”函数并执行它。

答案 2 :(得分:0)

this指的是调用函数的特定DOM元素。

以下一行:

this.setOptions = setOptions;

表示将函数“setOptions”分配给DOM元素的“setOptions”属性。