私はよく、次のように、作成された場所で呼び出される多くの無名関数で構成される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)ではあまり見られないのですか?