Javascript Prototype方法和未使用的变量

时间:2015-05-14 21:05:05

标签: javascript node.js prototype

我目前正在通过原型方法构建对象。这个对象不需要用户构建的方法,虽然这里的工厂方法可能更好,但我对原型设计更加满意。

我想知道var buf = data._raw;。一旦返回对象,buf会发生什么,它是否会造成内存泄漏,还是垃圾收集还是会发生其他事情?

var Identification = function(data){
  var buf = data._raw;

  this.def = data.def;
  this.master = buf.readUInt8(9);
  this.version = buf.readUInt8(10);
  //more reading from a buffer...
}

module.exports = Identification;

我通过传入包含3个属性的data在另一个模块中调用此函数。 def_rawlength其中def是对象类型的int表示,_raw是缓冲区,{{1}是缓冲区长度。

length

这是不好的做法吗?我是否会在未来开放代码以解决问题?

感谢。

1 个答案:

答案 0 :(得分:2)

  

一旦返回对象,buf会发生什么?

它被垃圾收集,因为没有任何东西可以再引用变量/值。您的构造函数似乎不会导出仍然能够访问buf的闭包。

  

是否会造成内存泄漏?

不,为什么会这样?标准垃圾收集规则也适用于构造函数。