编写jQuery插件 - 多个实例化

Att*_*cus 2 javascript jquery

我有一个关于我的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}方法范围内的所有内容?

Rya*_*yan 6

是的,这是正确的,因为当jQuery初始化函数在全局对象jQuery上设置时,$.extend将修改settings在闭包范围中暴露的内容.test.每次执行时.test,闭包范围都是相同的; 因此,所有对象都将保留更改.