使用对象的值设置函数变量

时间:2012-07-28 01:56:39

标签: javascript

通常我会设置一个类似的函数变量:

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这样做) ,循环对象并以这种方式执行会更容易。

1 个答案:

答案 0 :(得分:0)

不直接。如果要将事物附加到全局命名空间(window),可以编写如下内容:

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

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

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);