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

时间:2013-03-14 03:20:28

标签: javascript object

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

我基本上希望做下划线的“_.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"}

有什么建议吗?

2 个答案:

答案 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;
}