Javascript:调用时删除函数是否安全?

时间:2013-11-28 11:00:47

标签: javascript

我想只允许调用digest方法一次,因此在计算摘要时删除函数,that是没有函数的简单对象。

var Content = function(filename) {
  var that = {};
  var name = path.basename(filename);

  var digest = function(callback) {
    fs.readFile(filename, function(err, data) {
      that.hash = crypto.createHash('sha1').update(data).digest('hex');
      delete that.digest; // IS THIS SAFE?
      callback();
    });
  };

  that.digest = digest;
  that.name = name;

  return that;
};

使用它:

var content = Content('/path/to/file');
content.digest(function() {
  // content.hash is available
});

这是安全和良好的做法吗?

1 个答案:

答案 0 :(得分:2)

是的,这是安全的,因为删除只是删除了该引用,它没有释放任何内存,所以你的功能仍然存在:

  

与普通信念所暗示的不同,删除操作符与直接释放内存无关(它只能通过断开引用间接进行。

这是一个好习惯吗?那么这只是我的意见......我认为当你阅读那些代码时你不是很清楚(你需要全部阅读才能理解会发生什么)所以我会避免它支持别的东西(如果你正在使用某种代码)例如,懒惰初始化你可以使用另一个属性。这说法中有适当的评论...