我无法理解这段代码:
$.functionone = function(){
function setOptions(newOptions){
...
}
this.setOptions = setOptions;
}
在'this.setOptions'中添加'this'是为了什么?我理解它引用了函数setOptions,但是添加'this'会使函数被调用吗?我知道这是指DOM元素,但是在这个特定场景中有什么意义。感谢。
答案 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”属性。