javascript - 关于对象生命周期的问题
ringa_lee
ringa_lee 2017-04-10 16:14:24
[JavaScript讨论组]

假设当前环境是在某个局部作用域里。

比如有这么一个Function对象:

var ABC = function() {
  this.show = function() {
    alert('呵呵哒');
  };
  $('#test').click(this.show);
};

new ABC();

我一直认为理论上:一个对象失去所有指针之后就会自动销毁。
所以我自然而然的认为这段代码运行完,再出了这个作用域之后,这个new ABC()对象就会自动销毁。
但是,
好像并没有。

如果真有一个idtestelement,点击之后,还是会弹出呵呵哒

所以,求解。

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
PHPz

你的现象得不出你的结论。
$('#test')click事件绑定的方法是ABC.show,和new ABC()是否销毁没有任何关系。
何况凡是你用到的对象都不会被销毁。常规方法是无法通过测试用例来得出是否已被销毁的结论的。

巴扎黑

new ABC(),运行了jQuery的绑定代码,你的this.show已经把值传到click()的形参里了,当然会弹呵呵哒。。。不然es5的for循环里异步函数为嘛搞成闭包的形式。。。

黄舟

new出来的instance并没有被销毁,就算是出了该作用域,因为dom事件和闭包一样,里面用到的对象和数据是不会被销毁,除非事件取消和闭包被销毁,才会清除。。所以大量用到的时候,要注意内存泄露的问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号