1

我想与具有默认值的params成员进行哈希:defaults

var defaults = { item1: "def1", item2: "def2" };
var params = { item2: "param2", item3: "param3" };
var result = // some clever code here...
console.log(result); // { item1: "def1", item2: "param2", item3: "param3" };

我能想到的最聪明的代码是迭代defaults成员并将它们添加到params那里,如果它们在那里丢失。我想知道是否有一些本机解决方案而不是编写自己的代码?原型设计似乎很有希望,但它只适用于功能对象,我不想要这里。有什么想法吗?

4

1 回答 1

1

如果有人仍然感兴趣:将近两年后,我猜问题中提到的聪明代码将是

__proto__: Object.create(defaults)

请参阅示例:

var defaults = { item1: "def1", item2: "def2" };
var params = { item2: "param2", item3: "param3",
  __proto__: Object.create(defaults) };

for(var i in params) console.log(i,params[i]);
// item2 param2
// item3 param3
// item1 def1

请记住,__proto__推荐使用,但与setPrototypeOf()链接建议的方法不同,它得到了很好的支持。让我们看看未来会怎样。

于 2014-11-19T22:26:26.393 回答