基本類型(棧數據) String Number Boolean null undefined symbol(ES6) 引用類型(堆數據) Array Object Function Date RegExp 等 區分 棧小堆大 1.基礎類型是放置在棧裡面,一般基礎類型的數據都比較小,賦值不影響自身 v ...
基本類型(棧數據)
String Number Boolean null undefined symbol(ES6)
引用類型(堆數據)
Array Object Function Date RegExp 等
區分 棧小堆大
1.基礎類型是放置在棧裡面,一般基礎類型的數據都比較小,賦值不影響自身
var a = 1; var b = a; a = 2; console.log(b); // 1
2.引用類型是放置在堆裡面,一般引用類型的數據都比較大,而棧空間又比較小,所有引用類型都是放置在堆裡面,而放置在棧空間的是引用類型的地址引用,互相賦值會影響雙方
var obj1 = { name: 'lyj' }; var obj2 = obj1; obj1.name = 'cjy'; console.log(obj2); // {name: 'cjy'}
3.如果引用類型想賦值卻有不想互相影響,可以通過淺克隆方式,如下
1.ES6結構 var obj1 = {name: 'lyj'} var obj2 = {...obj1} 2.JSON大法 var obj1 = {name: 'lyj'} var obj2 = JSON.parse(JSON.stringify(obj1)) 3.函數封裝clone function clone(origin, target) { var target = target || {} for(var prop in origin) { target[prop] = origin[prop] } return target } var obj1 = {name: 'lyj', sex: 'boy'} var obj2 = clone(obj1)
end!!!