javascript基础类型和引用类型


基本类型(栈数据)

  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!!!


作者:杰哥之家,发布于:2020/06/30
原文:https://www.cnblogs.com/lyjfight/p/12929572.html