Javascript new Class()不指定变量,也不通过回调传递的引用手动删除它,这样安全吗?我在做内存泄漏吗?

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,

我已经用NodeJS编写了这段代码。它是一个在
配置文件
上工作的助手,该文件删除一些行并重写该文件

在回答之前,请查看所有标记点(带!)。每个回调都返回对
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将可用于垃圾收集。