對象的合併及拷貝

一、$.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表示深複製

  對象深拷貝,拷貝後的對象與原對象互不影響原型鏈

相關文章
相關標籤/搜索