首页 > 关于对象生命周期的问题

关于对象生命周期的问题

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

比如有这么一个Function对象:

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

new ABC();

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

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

所以,求解。


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


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


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

【热门文章】
【热门文章】