私が見ることができる唯一の違いは、append
2 つのパラメーターをmerge
取り、2 つ以上のパラメーターを取ることです。
編集:
メソッドのソース コードを読むと、別の違いがわかります。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
しても の配列項目はfurstObj.lastName
変更されませsecondObj.lastName
ん。これらは同じオブジェクトではないためです。
フィドル: http://jsfiddle.net/Guffa/PrsXj/
また、merge
2 番目のパラメーターが文字列の場合、メソッドにはオーバーロードがあります。
merge(obj, "name", obj2)
obj2.name
これは、プロパティをにコピーするだけです。obj
つまり、基本的には と同じmerge(obj, { name: obj2.name })
です。