javascript - 把一个有值的对象赋值为空,那原本对象的值,还存在吗?
本文介绍了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屋!
查看全文