gpt4 book ai didi

javascript - 与 OO 相比,编写 "functional"Javascript 有什么好处?

转载 作者:行者123 更新时间:2023-11-30 18:23:28 25 4
gpt4 key购买 nike

我经常遇到 Javascript 代码片段,其中包含许多在创建它们的地方调用的匿名函数,例如 here :

var prealloc = (function() {
// some definitions here

return function prealloc_win(file, size, perms, sparseOk) {
// function body
};
})();
// can be called like this:
prealloc(...);

所以这调用了一个返回另一个函数 prealloc_win 的匿名函数。对我来说,这似乎等同于实例化一个类,其中结果对象公开函数 prealloc_win:

function preallocObj() { 
// some definitions here
this.prealloc_win = function(file, size, perms, sparseOk) {
// function body
};
}
prealloc = new preallocObj();
// can be called like this:
prealloc.prealloc_win(...);

这个假设是否正确?使用直接调用的匿名函数有什么好处?为什么这个习语在 Javascript 中如此常见,而在其他可以用相同方式编写的语言(C、C++、Python)中却不常见?

最佳答案

交易是 preallocObj 类说这可能是多次实例化。我可以创建它的更多实例,即使它并不是真正为此而设计的。您可以采取一些技巧来防止这种情况发生,但为此使用立即调用的匿名函数更容易。

使用立即创建和调用的匿名函数,创建一个“类”,立即“实例化”并分配给 prealloc 和在此之后无法引用创建 prealloc 对象的原始匿名函数。它被创建、调用和丢失。

关于javascript - 与 OO 相比,编写 "functional"Javascript 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11493296/

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