Javascript:从默认对象填充对象中未定义的属性
我试图使用默认对象中的值将未定义的属性填充到对象中 我基本上希望做一些类似下划线的“u.default”函数 以下是我所拥有的:Javascript:从默认对象填充对象中未定义的属性,javascript,object,Javascript,Object,我试图使用默认对象中的值将未定义的属性填充到对象中 我基本上希望做一些类似下划线的“u.default”函数 以下是我所拥有的: defaults: function(anyObject){ var argArray = Array.prototype.slice.call(arguments,1); for(var key in argArray){ if(anyObject[key] == null){ anyO
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"}
有什么建议吗 我想试试这样的东西:
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: function(obj, def) {
Object.keys(def).forEach(function(key) {
obj[key] = obj[key] || def[key];
});
return obj;
}
默认值:函数(默认值){
var args=Array.prototype.slice.call(参数,1);
对于(变量i=0;i
这只会将新键添加到默认值
尝试如下操作:
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: function(obj, def) {
Object.keys(def).forEach(function(key) {
obj[key] = obj[key] || def[key];
});
return obj;
}
您当前的代码是做什么的?它返回类似于:{extension:.jpeg“}{extension:.gif”,quality:“high”}extension=.jpeg的内容。我知道argArray有问题,请按您的要求执行。{extension:.jpeg”,quality:“high”}这里唯一的问题是我们正在使用另一个循环。如果我们有数百个其他参数呢。@沙菲拉扎克:这就是下划线的作用: