【发布时间】:2016-09-01 21:45:29
【问题描述】:
我正在尝试使用对象的属性找到一种更短的清除变量的方法。
我有一个“userOptions”对象作为参数传入,如下所示:
var example = new myFunction({
maxLimit: 30,
});
在 myFunction 中,我有另一个名为“defaultOptions”的对象,我将其与 userOptions 进行比较,以将选项声明为变量。下面的例子可能看起来已经足够短了。 However it starts to get inefficient when number of options increases.
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 循环中声明变量或将更新的选项对象的属性提取为变量?
【问题讨论】:
-
有点不清楚您要完成什么。如果您有这个具有您想要的值的
defaultOptions对象,为什么不直接通过该对象访问它们呢?即,无论你在哪里访问maxLimit,只要写defaultOptions.maxLimit(你不需要使用括号语法)。 -
这就是大多数库(例如 jQuery 和 jQuery UI)所做的。除了一些为了方便而经常使用的选项。
-
如果您不想继续输入像
defaultOptions这样的长名称,可以给它一个短名称,例如var do = defaultOptions;。然后就是do.maxLimit。
标签: javascript variables object for-loop iteration