Javascript:从默认对象填充对象中未定义的属性

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

我试图使用默认对象中的值将未定义的属性填充到对象中

我基本上希望做一些类似下划线的“u.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"}

有什么建议吗

我想试试这样的东西:

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”}这里唯一的问题是我们正在使用另一个循环。如果我们有数百个其他参数呢。@沙菲拉扎克:这就是下划线的作用: