我正在尝试使用默认对象中的值将未定义的属性填充到对象中。
我基本上希望做下划线的“_.default”功能。
这就是我所拥有的:
defaults: function(anyObject){
var argArray = Array.prototype.slice.call(arguments,1);
for(var key in argArray){
if(anyObject[key] == null){
anyObject[key] = argArray[key];
}
} return anyObject;
}
我通过以下方式调用该函数:
defaults({extension : ".jpeg"}, {extension : ".gif", quality : "high"});
我希望它返回以下内容:
=> {extension : ".jpeg", quality : "high"}
有什么建议吗?
答案 0 :(得分:1)
我会尝试这样的事情:
defaults: function(defaults) {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < args.length; i++) {
var arg = args[i];
for (var key in arg) {
if (!(key in defaults)) {
defaults[key] = arg[key];
}
}
}
return defaults;
}
这只会为defaults
添加新密钥。
答案 1 :(得分:0)
试试这样:
defaults: function(obj, def) {
Object.keys(def).forEach(function(key) {
obj[key] = obj[key] || def[key];
});
return obj;
}