假设我有这个应用程序(以它的粗略形式)
+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标准背后的一般内存管理逻辑,当关闭对象从内存中释放时,释放的条件是什么,所以我的内存将不会填满我的程序运行的长期