原始类型存取数据:
var name = '张三'
var my = '张三'
上面这行代码是怎吗储存在内存中的呢
会在内存中开辟出一个空间,空间名叫name 他的值是张三
原始类型的变量,存放的是具体的值
引用类型存取数据
示例
var obj = {
name: '张三',
age: 13
}
var my = obj
引用类型的变量,存放的是内存地址
从上图你会看到对象 obj 中的属性并没有存放到自己开辟的空间内,
而是有新开辟一块内存空间拿来存放对象obj中的属性,每一块内存空间都是有编号的,也就是内存地址
而obj的内存空间存放的是新开辟空间的内存地址,
也可以说my指向xx对象 my持有xx对象的引用
加深理解
再来一种情况加深理解
var obj = {
name: '张三',
age: 13
}
var my = obj
my = {
name: '李四',
age: 14
}
代码1-5行的代码运行时内存存储示意图
代码6-9行的代码运行时内存存储示意图
对象 == 对象
var obj = {
name: '张三',
age: 13
}
var my = {
name: '张三',
age: 13
}
console.log(obj == my) // false
console.log(obj === my) // false
内存存储示意图
看完这个图,你觉的他们会相等吗,比的都不是一块内存空间,怎吗可能相等