给定对象:
var firstObject = {
key1 : 'value1',
key2 : 'value2'
};
我如何复制属性在另一个对象(secondObject)像这样:
var secondObject = {
key1 : 'value1',
key2 : 'value2',
key3 : 'value3',
key4 : 'value4'
};
使用对firstObject的引用?就像这样:
var secondObject = {
firstObject,
key3 : 'value3',
key4 : 'value4'
};
(这行不通……我把它放在大行中只是为了显示我想如何组织代码)。
不使用任何JavaScript框架的解决方案是否可行?
对象。赋值或析构可能会给您带来很大的麻烦,因为只有顶级属性被复制为值。
所有嵌套的属性都将被复制为引用,并保留对原始对象属性的引用。如果你的物体是平的,那是可以的。但如果不是,这些方法很少适用。
对于最简单有效的一行程序,我会推荐deepmerge包,它没有这个缺点。
const newObject = deepmerge({}, oldObjectWithNestedProperties);
这将给你oldObjectWithNestedProperties的完全分离和独立的newObject副本。
遍历第一个对象的属性并将它们赋值给第二个对象,如下所示:
var firstObject = {
key1 : 'value1',
key2 : 'value2'
};
var secondObject = {
key3 : 'value3',
key4 : 'value4'
};
for (var prop in firstObject) {
if (firstObject.hasOwnProperty(prop)) {
secondObject[prop] = firstObject[prop];
}
}
for-in循环是不够的;你需要hasOwnProperty。有关原因的详细解释,请参阅http://bonsaiden.github.com/JavaScript-Garden/#object.forinloop。