var a = { name: '前端开发' }
var b = a;
a = null
console.log(b)//{name:'前端开发'}
疑惑:1.a是对象,属于引用数据类型, 不应该存储于堆中吗?
2.b=a 是否等于b和a都指向同一个空间地址
3.我原先的想法是这样的,但实际结果表明他们不指向同一个空间,很疑惑
这是我在控制台尝试的,大概说一下我的理解。问题在于a=null这个地方,有点误导方向了
创建了a是一个在堆中对象,然后b=a,这使得b也指向了a这个对象,现在使用对象.属性的方式是修改对象的属性,而不改变这个对象的地址,所以b和a都会发生对象属性的变化。
但是js语言在a=null或者是a={name:'22'},含义是指创建了一个null或者{name:'22'}这个对象地址,使a指向它,所以这个时候a指向了新的地址,b还是原来的那个对象
var a = { name: '前端开发' }
a
{name: "前端开发"}
var b = a;
b
{name: "前端开发"}
a.name='111'
"111"
a
{name: "111"}
b
{name: "111"}
a={name:'2222'}
{name: "2222"}
b
{name: "111"}
a=null
null
b
{name: "111"}