为了账号安全,请及时绑定邮箱和手机立即绑定

删除JavaScript中的对象

删除JavaScript中的对象

蛊毒传说 2019-06-21 17:18:04
删除JavaScript中的对象我有点困惑于JavaScript的delete接线员。取以下代码:var obj = {     helloText: "Hello World!"};var foo = obj;delete obj;在这段代码被执行之后,obj是null,但是foo仍然是指一个完全类似的对象obj..我猜这个对象是同一个对象foo指向。这让我很困惑,因为我期待着写作delete obj删除了以下对象obj在内存中指向-而不仅仅是变量obj.这是因为JavaScript的垃圾收集器是在保留/发布的基础上工作的,所以如果我没有指向对象的任何其他变量,那么会从记忆中移除?(顺便说一下,我的测试是在Safari 4中完成的。)
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

DELETE运算符只删除引用,而不删除对象本身。如果它确实删除了对象本身,其他剩余的引用就会悬挂起来,就像C+DELETE一样。(访问其中一个会导致崩溃。要使它们都变为空,就意味着在删除时需要额外的工作,或者为每个对象增加额外的内存。)

因为Javascript是垃圾收集的,所以您不需要自己删除对象-当无法再引用对象时,它们将被删除。

如果您完成了对象的引用,删除它们可能是有用的,因为这将为垃圾收集器提供更多有关可以回收的信息。如果对一个大型对象的引用仍然存在,这可能导致它无法回收-即使您的程序的其他部分实际上没有使用该对象。


查看完整回答
反对 回复 2019-06-21
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

“变量隐式声明”是全局对象的属性,因此DELETE对它们进行工作,就像对任何属性一样。用var声明的变量是不可摧毁的。


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 688 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信