我经常遇到由许多匿名函数组成的 Javascript 代码片段,这些函数在它们被创建的地方被调用,例如:
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)中却不常见?