原始类型存取数据:

  1. var name = '张三'
  2. var my = '张三'

上面这行代码是怎吗储存在内存中的呢
会在内存中开辟出一个空间,空间名叫name 他的值是张三
原始类型的变量,存放的是具体的值
image.png

引用类型存取数据

示例

  1. var obj = {
  2. name: '张三'
  3. age: 13
  4. }
  5. var my = obj

引用类型的变量,存放的是内存地址
image.png
从上图你会看到对象 obj 中的属性并没有存放到自己开辟的空间内,
而是有新开辟一块内存空间拿来存放对象obj中的属性,每一块内存空间都是有编号的,也就是内存地址
而obj的内存空间存放的是新开辟空间的内存地址,
也可以说my指向xx对象 my持有xx对象的引用

加深理解

再来一种情况加深理解

  1. var obj = {
  2. name: '张三'
  3. age: 13
  4. }
  5. var my = obj
  6. my = {
  7. name: '李四',
  8. age: 14
  9. }

代码1-5行的代码运行时内存存储示意图
image.png
代码6-9行的代码运行时内存存储示意图
image.png

对象 == 对象

  1. var obj = {
  2. name: '张三'
  3. age: 13
  4. }
  5. var my = {
  6. name: '张三'
  7. age: 13
  8. }
  9. console.log(obj == my) // false
  10. console.log(obj === my) // false

内存存储示意图
image.png
看完这个图,你觉的他们会相等吗,比的都不是一块内存空间,怎吗可能相等