1、如果轉殖物件是基本型別,直接複製就行
1var str1 = 'abc'
2var str2 =str1
3 console.log(str2) //
abc4 str1 = '123'
5 console.log(str2) //
abc
2、如果不是基本型別,就不能直接複製,以陣列為例
1var a=[1,2,3,4];
2var b=a;
3var c=b;
4c.pop();
56 console.log(a) //
[1,2,3]
7 console.log(b) //
[1,2,3]
8 console.log(c) //
[1,2,3]
轉殖的幾種方法:
一、比較簡單的遍歷陣列賦值
1var a = [1,2,3,4];
2var b =;
3for(var i = 0; i < a.length; i++)
6 console.log(b) //
[1,2,3,4]
二、slice方法
原理:從乙個陣列中擷取出新的陣列
接收兩個引數,第乙個引數開始的下標,第二個引數結束的下標(不包含)。
原陣列不變。如果只設定乙個引數,表示擷取到最後。如果不寫引數,表示實現陣列的複製
1var arr1 = [1, 2, 3, 4]
2var arr2 = arr1.slice(0)
3 console.log(arr2) //
[1,2,3,4]
4 arr1 = [4, 3, 2, 1]
5 console.log(arr2) //
[1,2,3,4]
三、assign實現深淺拷貝
淺拷貝:
1var obj = ;
2var copy =object.assign({}, obj);
3 console.log(copy); //45
6var arr = [1,2,3];
7var copy =object.assign(, arr);
8 console.log(copy); //
[1,2,3]
深拷貝:
1 let arr1 = [1,2,3,4,5];2 let arr2 =json.parse(json.stringify(arr1));
3 console.log(arr2) //
[1,2,3,4,5]
四、concat方法
原理:拼接陣列
返回拼接後的新陣列,原陣列不受影響
1 let arr1 = [1,2,3,4];23 let arr2 =arr1.concat()4
5 arr2[1] = 9
6 console.log(arr1, arr2) //
[1,2,3,4], [1,9,3,4]
js中的轉殖
1.如果轉殖物件是基本型別,直接複製就可以 2.不是基本型別就不可以直接複製,以陣列為例 轉殖的幾種方法 1.比較簡單的遍歷陣列賦值 方法 1 作用 從乙個陣列中擷取出新的陣列 2 格式 陣列名.slice begin,end begin表示開的下標 end表示結束的下標,但是在擷取時不包含結束下標...
JS 物件轉殖的方法
1.object.assign 物件淺複製 created by itw zhangdl on 2018 1 10.let obj let obj2 object.assign obj obj.friends.push 4 console.log obj2 2.object.creat 詳情看es6...
js原生轉殖方法
為了看得清楚一點,引數變數屬性 命名都是隨意 主要思路 五點 1,遍歷物件 2,判斷是不是原始值 typeof instanceof,tostring,constructor 這些方法都可以 3,判斷是陣列還是物件 4,建立相應的陣列或物件 5,使用遞迴 var obj function copy ...