我正在编写一个允许参数“设置”的插件。但我预测用户不会总是想要设置功能的每个方面。
function This_Function(a,b,c,d);
例如,也许他们只想设置a
和c
,而不是b
和d
(他们只是希望将这些设置为默认值)。如何编写函数(或相关参数),以便用户可以自定义他们希望传递的函数?我感觉它涉及解析输入,但我已经看到了许多具有此功能的其他功能。
提前感谢您的帮助。
答案 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年的时间才弄明白:)