Javascript / jQuery:在自定义函数上改变参数

时间:2010-03-27 20:47:59

标签: javascript jquery function parameters

我正在编写一个允许参数“设置”的插件。但我预测用户不会总是想要设置功能的每个方面。

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

例如,也许他们只想设置ac,而不是bd(他们只是希望将这些设置为默认值)。如何编写函数(或相关参数),以便用户可以自定义他们希望传递的函数?我感觉它涉及解析输入,但我已经看到了许多具有此功能的其他功能。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

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'});

答案 1 :(得分:1)

更透明的方式......

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

This_Function({a:12; c:'hello'; d:1);

答案 2 :(得分:0)

我认为我真正想要解决这个问题的答案是:

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年的时间才弄明白:)