0

通常我会设置一个函数变量,如下所示:

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 做到了),它会循环对象并以这种方式进行操作要容易得多。

4

1 回答 1

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);
于 2012-07-28T02:02:02.983 回答