基本类型(栈数据)
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!!!
原文:https://www.cnblogs.com/lyjfight/p/12929572.html