Javascript 覆盖jQuery插件的设置?

Javascript 覆盖jQuery插件的设置?,javascript,jquery,Javascript,Jquery,我构建了一个如下插件: ;(function ($,window,undefined){ ... ...default settings area... ...content area... ... })(jQuery,window); 但是这个插件可以有很多(!)配置 因此,每个配置文件都可以位于js文件中。例如: mySettings.js: var myseetings={a:1,b:2….} 那么问题在哪里呢 必须在加载插件之前加载设置文件。(因此插件将能够读取覆

我构建了一个如下插件:

;(function ($,window,undefined){

  ...
  ...default settings area...
  ...content area...
  ...

})(jQuery,window);
但是这个插件可以有很多(!)配置

因此,每个配置文件都可以位于js文件中。例如:

mySettings.js:

var myseetings={a:1,b:2….}

那么问题在哪里呢

  • 必须在加载插件之前加载设置文件。(因此插件将能够读取覆盖设置区域中的
    mySettings

  • 与插件本身进行
    mySettings
    通信的唯一方法是通过
    窗口
    对象

问题:


通过js文件配置可以有许多(!)设置的插件的正确方法是什么。

因为我没有代码示例,所以我将为您提供一些通用的解决方案

  • 收集数组中的设置对象,并在覆盖设置区域内对其进行迭代
  • 通过窗口公开插件,并直接将设置附加到其中 JS

    //File 1.js
    window.settings = window.settings || []; 
    window.settings.push({a:'11'}); 
    
    //File2.js
    window.settings = window.settings || []; 
    window.settings.push({b:'22', c:'33'}); 
    
    //File3.js
    window.settings = window.settings || []; 
    window.settings.push({b:'222'}); 
    
    //Main.js File
    ;(function ($,window,undefined){
    
        var plugin = function(settings){
            var defConfig = {
                a: '1', 
                b: '2',
                c: '3'
            }; 
    
            var len = settings.length, i; 
    
            if(len){
                for(i = 0; i < len; i++){
                   defConfig = $.extend(defConfig, settings[i]); 
                }
            }else{
                defConfig = $.extend(defConfig, settings); 
            }
    
            alert(JSON.stringify(defConfig)); 
        }; 
    
        var instance = new plugin(window.settings || []); 
    
    })(jQuery,window);
    
    //文件1.js
    window.settings=window.settings | |[];
    window.settings.push({a:'11'});
    //File2.js
    window.settings=window.settings | |[];
    window.settings.push({b:'22',c:'33'});
    //File3.js
    window.settings=window.settings | |[];
    window.settings.push({b:'222'});
    //Main.js文件
    ;(函数($,窗口,未定义){
    var plugin=函数(设置){
    变量defConfig={
    a:‘1’,
    b:‘2’,
    c:'3'
    }; 
    var len=设置。长度,i;
    如果(len){
    对于(i=0;i
    //Main.js文件
    ;(函数($,窗口,未定义){
    var plugin=function(){
    变量defConfig={
    a:‘1’,
    b:‘2’,
    c:'3'
    }; 
    this.overrideSettings=函数(设置){
    var len=设置。长度,i;
    如果(len){
    对于(i=0;i
    //Main.js File
    ;(function ($,window,undefined){
    
        var plugin = function(){
            var defConfig = {
                a: '1', 
                b: '2',
                c: '3'
            }; 
    
            this.overrideSettings = function(settings){
                var len = settings.length, i; 
    
                if(len){
                    for(i = 0; i < len; i++){
                       defConfig = $.extend(defConfig, settings[i]); 
                    }
                }else{
                    defConfig = $.extend(defConfig, settings); 
                }
    
                alert(JSON.stringify(defConfig)); 
            }
        }; 
    
        window.instance = new plugin(); 
    
    })(jQuery,window);
    
    
    //File 1.js
    window.instance.overrideSettings({d:'93'}); 
    
    //File2.js
    window.instance.overrideSettings({b:'22222'});