我有一个关于我的jQuery插件的局部变量的问题.我很确定如果我在主jQuery函数寄存器之外声明它们,那么每次调用插件时它都会重新定义变量.
例:
(function($){
jQuery.fn.test = function(options){
if ( options ) {
$.extend( settings, options );
}
this.each(function(i,item){
// do whatever i am going to do
});
};
var settings = {
value1: "hello",
value2: "word"
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
说$(object).test({value1:'newterm'});多次调用..我是否认为每次调用该方法时,它会覆盖最近声明的设置的设置?
如果我想要我的插件的多个实例,我是否需要声明main jQuery.fn.test = function(){//here}方法范围内的所有内容?
是的,这是正确的,因为当jQuery初始化函数在全局对象jQuery上设置时,$.extend将修改settings在闭包范围中暴露的内容.test.每次执行时.test,闭包范围都是相同的; 因此,所有对象都将保留更改.