オブジェクトのプロパティを使用して、より短い方法で変数をデリバーする方法を見つけようとしています。オブジェクトのプロパティを使用してforループの変数を宣言する
私はこのようなパラメータとして渡された「userOptions」オブジェクトがあります:私は、変数としてオプションを宣言するためにuserOptionsとの比較「defaultOptions」と呼ばれる別のオブジェクトを持っているMyFunctionので
var example = new myFunction({
maxLimit: 30,
});
を。次の例は、すでに十分に短く見えるかもしれません。しかし、オプションの数が増えると効率が悪くなります。
function myFunction(userOptions) {
var defaultOptions = {
maxLimit: 20,
minLimit: 10
}
// Apply user options
for (var i in defaultOptions) {
if (userOptions.hasOwnProperty(i)) {
defaultOptions[i] = userOptions[i];
}
}
// Declare variables
var maxLimit = defaultOptions.maxLimit;
var minLimit = defaultOptions.minLimit;
}
This questionは私がやろうとしていたものと少し似ています。しかし、答えは、私が既に行ったようにオブジェクトのプロパティに1つずつアクセスすることを提案します。
このタスクを実行するより良い方法はありますか? forループ内の変数を宣言するか、更新されたオプションオブジェクトのプロパティを変数として抽出するのと同じですか?あなたがObject.assign
を探しているよう
それはあなたが達成しようとしているもの少し不明だ:代わりにあなただけのあなたも、物事をより簡潔にするために
destructuring assignment
を使用することができ、通常の変数を望むとES6へのアクセス権を持っています。あなたが望む値を持つこの 'defaultOptions'オブジェクトを持っていれば、そのオブジェクトを通してそれらにアクセスするだけではどうですか? I.E.、 'maxLimit'にアクセスしているところでは、' defaultOptions.maxLimit'と書くだけです(ブラケット構文を使う必要はありません)。 –これはほとんどのライブラリ(jQueryやjQuery UIなど)の機能です。おそらく便宜のために頻繁に使用されるいくつかのオプションを除いて。 – Barmar
'defaultOptions'のように長い名前を入力したくない場合は、' var do = defaultOptions; 'のような短い名前を付けることができます。それはちょうど 'do.maxLimit'です。 – Barmar