解释
我有一个传递参数的函数options
。此参数可以是对象、数组或字符串。根据参数是什么,将确定要做什么。
更新:我忘了提到,options
必须始终以相同结构的对象结束(换句话说,它必须始终设置默认值)。
我只想定义一次默认值,所以像你们中的一些人建议的那样使用过程 if 语句不是我的首选解决方案,但如果有必要我会使用它。
我不想这样做(如果可能的话):
function foo(options){
switch(typeof options){
case 'string':
// do something etc
break;
// etc
}
}
例子
如果参数是一个对象,则扩展它以设置默认值,如下所示:
function foo(options){
// Extend the options to apply default values
var options = $.extend({
bar: 'none',
baz: []
},options);
}
如果参数是字符串,则将 设置options.bar
为等于字符串并扩展默认值(类似这样):
function foo(options){
// Set the bar property to equal the supplied string
var options = {
bar: options
};
// Extend the options to apply default values
options = $.extend({
baz: []
},options);
}
如果参数是数组,则将 设置options.baz
为等于数组,并扩展默认值(类似这样):
function foo(options){
// Set the baz property to equal the supplied array
var options = {
baz: options
};
// Extend the options to apply default values
options = $.extend({
bar: 'none'
},options);
}
问题
如此有效,我希望能够以任何格式提供参数,并且该函数将从options
提供的内容构建相同的对象。如果没有提供这些值,那么它们将使用它们的默认值。
抱歉,这太不清楚了,很难解释。
附加示例
我(jQuery)可以演示的另一种潜在方法是查看animate() 之类的函数。请注意,您可以提供:
.animate( properties [, duration] [, easing] [, complete] )
或者
.animate( properties, options )
这个额外的例子并不完全是我希望实现的,但它是正确的