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

Javascript:调用函数时删除函数是否安全?,javascript,Javascript,我想允许只调用一次digest方法,这样在计算了digest之后函数就被删除了,并且是一个没有函数的简单对象 var Content = function(filename) { var that = {}; var name = path.basename(filename); var digest = function(callback) { fs.readFile(filename, function(err, data) { that.hash = cr

我想允许只调用一次
digest
方法,这样在计算了digest之后函数就被删除了,并且
是一个没有函数的简单对象

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
});

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

是的,它是安全的,因为delete只是删除该引用,它不会释放任何内存,因此您的函数仍然存在:

与一般的看法不同,delete操作符与直接释放内存无关(它只是通过中断引用间接释放内存)


这是一个好的实践吗?这只是我的观点…我认为当你阅读代码时,它不是很清楚(你需要阅读所有的代码来理解发生了什么),所以我会避免使用它,而选择其他的方法(例如,如果你使用某种延迟初始化,你可以使用另一个属性)。也就是说,如果代码中有适当的注释…

可能最好使用简单标志?