基本类型,引用类型,深浅拷贝
2019-03-02 本文已影响0人
饥人谷_阿银
1.基本类型值(数值、布尔值、字符串、null和undefined):指的是保存在栈内存中的简单数据段;
2.引用类型值(对象、数组、函数、正则):
存放在堆内存中的对象,变量保存的是一个指针,这个指针指向另一个位置。当需要访问引用类型(如对象,数组等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。
浅拷贝和深拷贝
JavaScript存储对象都是存地址的,所以浅拷贝会导致 obj1 和obj2 指向同一块内存地址。改变了其中一方的内容,都是在原来的内存上做修改会导致拷贝对象和源对象都发生改变,而深拷贝是开辟一块新的内存地址,将原对象的各个属性逐个复制进去。对拷贝对象和源对象各自的操作互不影响。
例子
//浅拷贝
var obj1 = {name = 'xxx'};
var obj2 = obj1;//指向同一个内存地址
//深拷贝
var obj1 = {name = 'xxx'};
var obj2 = {};//创建一个新空间
obj2.name = obj1.name;//存放name的数值
这是一个比较简单的对象的拷贝,再来看一个比较复杂的:
var people = {
name:'xxx', //基本数值
friends:['people1','people2','peopple3'], //数组
info:{ //对象
phone:'133xxxxxxxx',
age:'18',
sex:'man'
}
}