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操作符与直接释放内存无关(它只是通过中断引用间接释放内存)
这是一个好的实践吗?这只是我的观点…我认为当你阅读代码时,它不是很清楚(你需要阅读所有的代码来理解发生了什么),所以我会避免使用它,而选择其他的方法(例如,如果你使用某种延迟初始化,你可以使用另一个属性)。也就是说,如果代码中有适当的注释…可能最好使用简单标志?