Jquery ajax请求后释放内存
在ajax请求之后,您可以这样做来释放内存吗Jquery ajax请求后释放内存,jquery,Jquery,在ajax请求之后,您可以这样做来释放内存吗 function Ajax(){ this.url = null; this.data = null; this.success = null; this.global = true; this.timeout = JSON_TIMEOUT; this.cache = false; this.dataType = 'json'; this.type = 'post'; var
function Ajax(){
this.url = null;
this.data = null;
this.success = null;
this.global = true;
this.timeout = JSON_TIMEOUT;
this.cache = false;
this.dataType = 'json';
this.type = 'post';
var _this = this;
this.send = function(){
var jqxhr = $.ajax({
url : this.url,
data : this.data,
timeout : this.timeout,
cache : this.cache,
dataType : this.dataType,
type : this.type,
global : this.global
}
)
.success(this.success)
.error(function(){
Dialog.set_error({
headline : Lang.get('HDL_ERROR'),
body : Lang.get('ERR_TIMEOUT'),
btns : [
{
value : Lang.get('BTN_OK'),
script : function(){},
focus : true
}
]
})
})
.complete(function(){
delete _this;
});
};
}
否。
delete
不会释放内存,它会从对象中删除属性。如果您在var
上调用它(正如您所做的那样),它没有任何效果
JavaScript是一种垃圾收集语言。当不再有任何对象引用时,对象消耗的内存将自动回收。循环引用是自动处理的(因此,即使A
引用B
和B
引用A
,只要没有其他引用A
或B
,它们都可以回收)
在某些浏览器上,您遇到的问题是使用非JavaScript对象的循环引用(我正在关注您,Microsoft)。如果您有一个引用对象(比如函数)的DOM元素,并且该对象也引用了DOM元素,在IE上,即使没有其他对象引用这些对象,它们也永远不会被回收。但你的例子似乎不是这样
(这是我在上文中关于
delete
的陈述:如果从对象中删除的属性恰好引用了一个没有其他引用的对象,那么删除该属性将使该对象可以回收。但这是一个副作用,而且,delete
只与属性相关,而不是变量。)JavaScript运行自己的垃圾收集器。这意味着你不需要(也不能)对此做任何事情
加深你的好奇心。JavaScript是内存管理的。你为什么要自己“释放”内存?