用对象设置函数变量's值

Set a functions variables with an object's values

本文关键字:变量 对象 设置 函数      更新时间:2024-05-07

通常我会用这样的东西设置函数变量:

var width = null;
var height = null;
if(options) {
    if(options.width) width = options.width;
    if(options.height) height = options.height;
}

有没有一种方法可以简化这一点,比如:

var width = null;
var height = null;
if(options) {
    for(var val in options) {
        val = options[val];
    }
}

在这个简单的例子中,这似乎没有什么大的好处,但在我有大量变量要用单个对象的值设置的情况下(比如说…ajax可以做到这一点),只循环对象并以这种方式进行操作会容易得多。

不直接。如果你想把东西附加到全局名称空间(window),你可以写这样的东西:

if (options) {
  for(var val in options) {
    window[val] = options[val];
  }
}

但除非绝对必要,否则您通常希望避免混淆CCD_ 2。一个常用的替代方法是创建一个保存默认选项的对象,并在提供新选项时简单地覆盖它们:

var defaults = {
  height: 0,
  width: 0
}
if (options) {
  for(var val in options) {
    defaults[val] = options[val];
  }
}
// use values now stored in `defaults`
console.log(defaults.height);