ECMAScript的數(shù)據(jù)類型
基本數(shù)據(jù)類型
基本數(shù)據(jù)類型主要是:undefined,boolean,number,string,null,symbol
-
基本數(shù)據(jù)類型以名值存儲在棧中:
let a = 1 let b = a執(zhí)行第一個語句之后,棧是這樣的
avatar執(zhí)行第二個語句,就變成這樣了
avatar此時如果修改a的值,對b不會造成任何影響
引用數(shù)據(jù)類型的存儲
包括:對象、數(shù)組、函數(shù)等
-
引用類型存儲在堆中
let person1 = {} let person2 = {}avatarlet a = [1,2,3] let b = aavatar引用類型的賦值就是將a的引用給b,兩者指向同一塊內(nèi)存,兩者的操作會互相影響
a[1] = 5 console.log(b[1]) //5 console.log(a === b) //true
賦值和淺拷貝的區(qū)別
賦值:簡單地把變量的引用給目標變量
淺拷貝:把對象的一級屬性拷貝給另一個對象,但不包括子對象
-
舉個栗子:
let a=[0,1,[2,3],4], b=a.slice(); //slice方法是實現(xiàn)淺拷貝的一種方式 a[0]=1; a[2][0]=1; console.log(a,b);avatar
深拷貝的方法
深拷貝:把一個對象的所有子對象都拷貝給另一個對象,兩個對象之間互不影響
-
常用方法:
可以用遞歸的方法
用jQuery的extend方法
-
用json對象
function deepClone2(obj) { var _obj = JSON.stringify(obj), objClone = JSON.parse(_obj); return objClone; }




