何时从内存中清除javascript闭包

时间:2016-06-02 07:28:48

标签: javascript memory-management closures

假设我有这个应用程序(以它的粗略形式)

+function($) {
  var appName = "FooBarBaz";
  var appID = appName.replace(/[^a-z]+/gi, '').replace(/(.)([A-Z])/g, "$1-$2").toLowerCase()
  var Application = function($elem) {
     this.$el = $elem;
     this.appName = appName;
     this.appID = appID;
  }
  Application.prototype.getID = function() { 
    return this.appID;
  }
  Application.prototype.setID = function(newid) {
    this.appID = newid;
  }
  $.fn.appThing = function () { 
     var $this = $(this);
     var app = $this.data('app.'+appName);
     if(!app) { 
         $this.data(oc, (data = new Application(this)));
     }
  }
}(window.jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

现在如果重新加载并且$.fn.appThing被新的覆盖(完全相同的代码,但新加载)应用程序函数和它链接到的所有dom元素被新的新html内容替换,封闭是否从内存中删除?或者它会以某种方式保留自己。

我很好奇javascript标准背后的一般内存管理逻辑,当关闭对象从内存中释放时,释放的条件是什么,所以我的内存将不会填满我的程序运行的长期

0 个答案:

没有答案