gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:04:00 29 4
gpt4 key购买 nike

我只想允许调用 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
});

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

最佳答案

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

Unlike what common beliefs suggests, the delete operator has nothing to do with directly freeing memory (it only does indirectly via breaking references.

这是一个好的做法吗?好吧,这只是我的意见...我认为当您阅读该代码时并不太清楚(您需要阅读全部内容才能了解发生了什么),所以我会避免它而选择其他东西(如果您使用某种例如,对于延迟初始化,您可以使用另一个属性)。也就是说,在代码中添加适当的注释...

关于Javascript:调用时删除函数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264296/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com