我能看到的唯一区别是它append
采用两个参数,并且merge
采用两个或多个参数。
编辑:
阅读方法的源代码,我看到了另一个不同之处。该merge
方法将从其他对象克隆属性,而该append
方法仅复制它们。
因此,如果您在某些对象中有一个对象或数组作为属性,则在使用后可以从原始对象访问这些对象append
:
var firstObj = {
name: 'John',
lastName: [ 'Doe' ]
};
var secondObj = {
age: '20',
sex: 'male',
lastName: [ 'Dorian' ]
};
//Object.merge(firstObj, secondObj);
Object.append(firstObj, secondObj);
console.log(firstObj.lastName[0]); // Dorian
secondObj.lastName[0] = 'McEnroe';
console.log(firstObj.lastName[0]); // McEnroe
如果merge
改为使用,则更改时数组项 infurstObj.lastName
不会更改secondObj.lastName
,因为它们不是同一个对象。
小提琴:http: //jsfiddle.net/Guffa/PrsXj/
此外,merge
当第二个参数是字符串时,该方法具有重载:
merge(obj, "name", obj2)
那只会将属性复制obj2.name
到obj
,即与 基本相同merge(obj, { name: obj2.name })
。