这篇文章是为了解释浅拷贝和深拷贝的预备文章,不做详细说明,但助于理解浅拷贝和深拷贝。
想看详细说明的文章,请移步:ECMAScript 原始类型
原始值和引用值
JS变量可以包含两种不同类型的数据:原始值和引用值
- 原始值
原始值是固定而简单的值,
存放在栈(stack)中的简单数据段
它们的值直接存储在变量访问的位置 - 引用值
引用值则是比较大的对象
存放在堆(heap)中的对象
存储在变量处的值是一个指针(pointer),指向存储对象的内存处
所有引用类型都集成自Object - 二者差别
原始值无法更改
原始值之间的比较就是值得比较,只要是值相等,他们就可以用“==”判断;而对象是无法比较的,就算属性,方法完全一样,也是不相等的。对象的比较都是引用的比较,只有两个引用指向用一个对象时,他们才相等。 - 关于栈和堆的存储图解
原始值的拷贝
- 原始值包括:Undefined,Null,Boolean,Number,String
- 原始值无法更改,因为原始值的