代码之家  ›  专栏  ›  技术社区  ›  dclowd9901

javascript/jquery:自定义函数的不同参数

  •  0
  • dclowd9901  · 技术社区  · 14 年前

    我正在编写一个插件,允许参数“设置它”,但我预测用户并不总是希望设置函数的每个方面。

    function This_Function(a,b,c,d);
    

    例如,也许他们只想设置 a c ,但不是 b d (他们宁愿把那些作为默认值)。如何编写函数(或相关参数),以便用户自定义他们希望传递的函数?我觉得它涉及到对输入的解析,但我见过许多其他具有此功能的函数。

    事先谢谢你的帮助。

    3 回复  |  直到 14 年前
        1
  •  7
  •   PetersenDidIt    14 年前
    function This_Function(options){
        // set up the defaults;
        var settings = {
            'opt1':2,
            'opt2': 'foobar'
        };
        $.extend(settings,options);
        if (settings.opt1 > 10) {
            //do stuff
        }
    }
    

    将允许您的用户执行以下操作:

    This_Function();
    This_Function({'opt1':30});
    This_Function({'opt2':'jquery'});
    This_Function({'opt1':20,'opt2':'javascript'});
    
        2
  •  1
  •   plodder    14 年前

    更透明的方式…

    function This_Function(options) {
        var a = options.a;
        var b = options.b;
        var c = options.c;
        var d = options.d;
    }
    

    此功能(A:12;C:'Hello';D:1);

        3
  •  0
  •   dclowd9901    11 年前

    我想我真正想要的答案是这个问题:

    function bacon(){
        for( var i in arguments ){
            if( arguments.hasOwnProperty(i) ){
                console.log( arguments[i] );
            }
        }
    }
    
    bacon( 'foo', 'bar', 'baz', 'boz' );
    
    // 'foo'
    // 'bar'
    // 'baz'
    // 'boz'
    

    要确保正在使用的参数是传递给函数的合法参数,应使用 .hasOwnProperty() .

    我花了3年时间才弄明白。)