javascript - 把一个有值的对象赋值为空,那原本对象的值,还存在吗?

查看:182
本文介绍了javascript - 把一个有值的对象赋值为空,那原本对象的值,还存在吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

对于一些公共常用字符,我好理解。
但是,对于一些比较复杂的对象有点迷糊了。
比如:var tempObj = xxxxxx (这是复杂的对象,假设占很大内存),此时我把tempObj = null;赋值为空,那么这个复杂的对象还存在吗?这个tempObj原本占有的内存会释放吗?

解决方案

obj = null,代表指向一块内存的引用被干掉了,但是内存在第一时间可能并没有被立即释放掉,浏览器gc是有一定时机的,并不一定立刻就释放内存。

引用MDN的一段示例代码

var o = { 
  a: {
    b:2
  }
}; 
// 两个对象被创建,一个作为另一个的属性被引用,另一个被分配给变量o
// 很显然,没有一个可以被垃圾收集


var o2 = o; // o2变量是第二个对这个对象的引用

o = 1;      // 现在,这个对象的原始引用o被o2替换了

var oa = o2.a; // 引用这个对象的a属性
// 现在,这个对象有两个引用了,一个是o2,一个是oa

o2 = "yo"; // 最初的对象现在已经是零引用了
           // 他可以被垃圾回收了
           // 然而它的属性a的对象还在被oa引用,所以还不能回收

oa = null; // a属性的那个对象现在也是零引用了
           // 它可以被垃圾回收了

具体可以看看这篇文章
https://developer.mozilla.org...

这篇关于javascript - 把一个有值的对象赋值为空,那原本对象的值,还存在吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆