通常我会设置一个类似的函数变量:
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这样做) ,循环对象并以这种方式执行会更容易。
答案 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);