説明
パラメータが渡される関数があります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) が示すことができるもう 1 つの潜在的な方法は、animate()のような関数を見ることです。次のいずれかを指定できることに注意してください。
.animate( properties [, duration] [, easing] [, complete] )
また
.animate( properties, options )
この追加の例は、まさに私が達成したいものではありませんが、正しい方向に沿っています