Javascript new Class()不指定变量,也不通过回调传递的引用手动删除它,这样安全吗?我在做内存泄漏吗?
我已经用NodeJS编写了这段代码。它是一个在Javascript new Class()不指定变量,也不通过回调传递的引用手动删除它,这样安全吗?我在做内存泄漏吗?,javascript,node.js,memory-leaks,Javascript,Node.js,Memory Leaks,我已经用NodeJS编写了这段代码。它是一个在配置文件上工作的助手,该文件删除一些行并重写该文件 在回答之前,请查看所有标记点(带!)。每个回调都返回对this的引用,即Conf的实例 以下是方法: Conf.prototype.disableModem = function(modem) { [...] return this; } Conf.prototype.flush = function(file, cb) { [...] cb && cb(err,
配置文件
上工作的助手,该文件删除一些行并重写该文件
在回答之前,请查看所有标记点(带!)。每个回调都返回对this
的引用,即Conf
的实例
以下是方法:
Conf.prototype.disableModem = function(modem) {
[...]
return this;
}
Conf.prototype.flush = function(file, cb) {
[...]
cb && cb(err, this);
}
我可以用new
安全地创建它,并通过回调传递“指针”吗
我认为这不是重点!我做了一些有用的事情,对吗
我在做内存泄漏吗
任何暗示都将不胜感激
MyClass.prototype.disableModem = function(modem, cb) {
this.isIdle = false;
async.waterfall([
function(cb) {
new Conf(settings.sms3.config, cb); // !1
},
function(conf, cb) {
cb(null, conf.disableModem(modem)); // !2
},
function(conf, cb) {
conf.flush(settings.sms3.config, cb); // !3
},
function(conf, cb) {
delete conf; // !4
this.isIdle = true;
cb();
}.bind(this)
], cb);
};
“!4”行没有用处,实际上是“严格”模式下的错误。文档可能会有所帮助。“删除”操作符从对象中删除属性,但不影响其值。即使您可以删除变量,传递给conf的值仍然有一个对它的引用,因此如果它是一个对象,您所要做的就是删除您创建的局部变量,而对传递给conf的值没有任何影响。当函数结束时,conf将可用于垃圾收集。