我正在尝试使用对象的属性找到一种更短的方法来解除变量。
我有一个" userOptions"对象作为参数传入,如下所示:
var example = new myFunction({
maxLimit: 30,
});
在myFunction中,我有另一个名为" defaultOptions"我将其与userOptions进行比较,以将选项声明为变量。以下示例可能已经足够短。但是,当选项数量增加时,它开始变得低效。
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有点类似于我想做的事情。但是,答案建议逐个访问对象属性,就像我已经做过的那样。
有没有更好的方法来完成这项任务?就像在for循环中声明变量或将更新的选项对象的属性提取为变量一样?
答案 0 :(得分:1)
好像你正在寻找Object.assign
,右边的参数会覆盖左边对象的重叠属性:
console.log(Object.assign({ id: 1, name: 'Hello' }, { name: 'World' }));
可以使用:
var config = Object.assign(defaultOptions, userSuppliedOptions);
如果您只是想要常规变量并且可以访问ES6,那么您也可以使用destructuring assignment
来使事情更简洁:
let { minLimit, maxLimit } = defaultOptions;