请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对象没有销毁问题

老师您好,本章节最后您讲的new出来的对象一直没有销毁,这是为什么呢
问题一  当页面销毁时,构造函数不会跟着销毁吗
问题二 构造函数是由js机制来销毁是吗,具体什么时候销毁

正在回答 回答被采纳积分+3

1回答

沁尘 2021-12-31 20:43:35

同学你好,对象会不会被销毁需要根据具体使用的情况来分析,你是在具体哪个小节里的哪个时间看到这部分的内容的?我需要根据当时使用的上下文来给你分析。

0 回复 有任何疑惑可以回复我~
  • 提问者 朕9083237 #1
    7-7 节 第15分钟 谢谢老师
    回复 有任何疑惑可以回复我~ 2021-12-31 20:57:53
  • 沁尘 回复 提问者 朕9083237 #2
    同学你好。
    问题一:会销毁,但是问题在于页面并不一定如我们所想的那样销毁了。如果对这块没了解过的话,会有个错觉就是,我们页面返回了,或者跳转到别的页面了,原来的页面就销毁了,其实是不一定的。在小程序中,有一个“栈”用于存放页面,我们也叫页面栈。我们每打开一个页面,就会往“栈”里面压入一个页面,但是页面什么时候弹出“栈”,这个是取决于我们跳转的方式还有当前栈的大小是否已经触达上限(据说是200个页面)。只有页面弹出“栈”了,这个页面才叫被销毁了,这点要特别注意。除了触达上限这种极端情况,我们可以手动、显式的把一个页面弹出栈,就是调用wx.redirectTo,这个API从文档说明也可以很直观的理解为什么会导致页面从“栈”中弹出,因为你调用之后,这个页面就没办法返回了,因为它已经从“栈”中剔除,销毁了。除此之外,像我们点击屏幕左上角“返回”按钮(就像我们视频中操作的)、手势、wx.navigateTo这些其实都不会导致页面被销毁,页面其实还是存在于“栈”中。这个机制在日常开发中是需要特别注意的,特别是当我们使用了页面的“onLoad生命周期函数”的时候,很容易踩坑,明明返回又进去了,但是没有重复触发onLoad的原因也正是因为如此,页面其实还是存在的。
    
    问题二:在JS中,一个对象的销毁的时机和策略取决于运行环境,在不同引擎下可能存在差异。在V8引擎(小程序也是使用V8)中,垃圾回收器会定期从一个叫“根”对象开始遍历引用了这个对象的对象,包括子子孙孙的对象,找到的,保留,除此之外,销毁。
    回复 有任何疑惑可以回复我~ 2021-12-31 21:51:32
  • 提问者 朕9083237 回复 沁尘 #3
    谢谢老师 明白了
    回复 有任何疑惑可以回复我~ 2021-12-31 22:06:04
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信