基本类型,引用类型,深浅拷贝

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'
         }   
}
上一篇 下一篇

猜你喜欢

热点阅读