js中的陣列和物件都是引用型別,其實說白了,陣列的資料型別也是物件,因此我們在實際專案中需要注意,如果直接將乙個物件賦值給另乙個空物件,這個操作僅僅是讓兩個物件的指標指向了同乙個地方。
此時的兩個物件中的任意乙個的值發生改變,勢必都會影響到另乙個。
方法一:concat()方法let arr1=[1,2,3];
let arr2=arr1;
console.log(arr1,arr2)//[1,2,3],[1,2,3]
arr2.push(4);
console.log(arr1,arr2)//[1,2,3,4],[1,2,3,4]
方法二:json.stringify()+json.parse()let arr1=[1,2,3];
let arr2=.concat(arr1)
arr1//[1, 2, 3]
arr2//[1, 2, 3]
arr2.push(4)
arr1//[1, 2, 3]
arr2//[1, 2, 3,4]
先轉換成字串在轉換成陣列
let arr1=[1,2,3];
let arr2=json.parse(json.stringify(arr1))
注意:對於物件陣列,方法一不適用,應當使用方法二。具體如下:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-m6b3qf0r-1591080410527)(let arr1=[
,];let arr2=.concat(arr1);
arr1[0].value=23
方法三:es6的擴充套件運算子 …
方法四:jquery的extendlet arr1=[1,2,3];
let arr2=[...arr1];
方法五:object.assign()let arr1=[1,2,3];
let arr2=$.extend(true,,arr1);
let arr1=[1,2,3];
let arr2=object.assign(,arr1);
tip: 以上示例均採用的陣列,對於物件同樣適用(除了方法一)關於陣列的引用和引用的陣列
c primer中第16章 模板與泛型程式設計那塊提到 template void array init t parm n 這是給出的解釋,我認為比較準確。array首先向右結合,所以這個相當於 int array array是個陣列,其中的元素是引用 應該叫 引用的陣列int array arra...
引用型別 物件和陣列
1.建立物件 物件 引用型別的值,是引用型別的乙個例項 建立object例項。方法一 使用new操作符後跟object建構函式。var person new object person.name nicholas person.age 29 方法二 使用物件字面量表示法 不會呼叫object建構函式...
陣列的引用(陣列的賦值)
public class se int b system.out.println 陣列a的元素個數為 a.length system.out.println 陣列b的元素個數為 b.length system.out.println 陣列a的引用 a system.out.println 陣列b的引...