给定两个对象,"扩展"将第二个对象的属性添加到第一个对象。
注意:
根本不要修改第二个对象。
var obj1 = {
a: 1,
b: 2
};
var obj2 = {
b: 4,
c: 3
};
extend(obj1, obj2);
console.log(obj1); // --> {a: 1, b: 2, c: 3}
我能够做到这一点:
function extend(obj1, obj2) {
for (var key in obj2) {
obj1[key] = obj2[key];
}
return obj1;
}
记录了:
{a: 1, b: 4, c: 3}
在我过去两天左右的时间里,我一直在试图解决这个问题。尝试使用谷歌搜索和一切。在此先感谢:)
答案 0 :(得分:0)
基本上,您只需要迭代第二个对象上的每个键,看看第一个对象是否具有该键。
如您所知,迭代可以使用for..in
loop完成。您缺少的部分是如何检查对象是否已具有给定属性。这是hasOwnProperty
的用途。
function extend(obj1, obj2) {
// Iterate over every (enumerable) key in obj2
for (var key in obj2) {
// If obj1 does not have a key by this name,
// add it to obj1
if (!obj1.hasOwnProperty(key)) {
obj1[key] = obj2[key];
}
}
}
var obj1 = {
a: 1,
b: 2
};
var obj2 = {
b: 4,
c: 3
};
extend(obj1, obj2);
console.log(obj1); // --> {a: 1, b: 2, c: 3}