一、$.extend()spa
var obj1 = { 'a': 1 }; var obj2 = { 'b': 2 };
var c = $.extend(obj1, obj2); // c = { 'a': 1, 'b': 2 } obj1 和 obj2 也同時被修改了 var c = $.extend({}, obj1, obj2); // c = { 'a': 1, 'b': 2 } obj1 和 obj2 沒有被修改
二、for (var key in arr)code
var obj1 = { 'a': 1 }; var obj2 ={ 'b': 2, 'c': 3 }; for(var key in obj2) { if(obj2.hasOwnProperty(key) === true){
//此處hasOwnProperty是判斷自有屬性,和 運算符不一樣,該方法會忽略掉那些從原型鏈上繼承到的屬性。 obj1[key] = obj2[key]; } } console.log(obj1); //{'a':1,'b':2,'c':3};in
三、Obj.assign() 對象
var o1 = { a: 1 }; var o2 = { b: 2 }; var obj = Object.assign(o1, o2); console.log(obj); // { a: 1, b: 2 } 原對象隨之發生改變 var obj = Object.assign({}, o1, o2); console.log(obj); // { a: 1, b: 2 } 原對象不改變
四、對象淺拷貝blog
var obj1={'a':1}; var obj2={'b':{'b1':22,'b2':33}}; $.extend(obj1, obj2); //obj1拷貝了obj2的屬性
對象淺拷貝,只是拷貝了對象的存儲地址,當原對象(或拷貝後的對象)發生改變時,拷貝後的對象(原對象)也會隨之發生改變繼承
五、對象深拷貝ip
var obj1={'a':1}; var obj2={'b':{'b1':22,'b2':33}}; $.extend(true, obj1, obj2); //第一個參數設爲true表示深複製
對象深拷貝,拷貝後的對象與原對象互不影響原型鏈