私は、アプリケーション用の小さなjavascriptモジュールを構築しようとしています。私はオブジェクトリテラルとIIFEの2種類のコード整理方法に慣れてきました。私は、IIFEでは、他に公開されていない限り、すべての変数と関数が非公開であることを知っていますが、それをオブジェクトリテラルに対して使用する理由は他にありますか?IIFE対オブジェクトリテラルを使用するタイミングは?
なぜ私はオブジェクトリテラルを使用します:あなたはES6あるモジュールを編成する第三、より良い方法を、学ぶべき
var app = (function(){
var gojiraSays = 'Toxic Garbage Island!!!'
var yellGojira = function(){
console.log(gojiraSays);
}
return{
yellGojira: yellGojira
}
}());
app.yellGojira();
これはあまりにも多くの異なることに依存します。たとえば、WebPackなどでモジュールを使用する場合、IIFEは完全に冗長です。 – Marty
編集後、はい、IIFEでラッピングすることの利点はカプセル化です(あなたの 'gojiraSays'を混乱させることはありません)。他の文脈にはIIFEがあります(オブジェクトリテラルとは対照的ではありません)。 'for'または' while'ループの中でローカル変数の値を取得する代わりに、非同期コールバックの変数そのものを取得します([こちら](http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-実用例))。 – Amadan
これらは2つの異なるものです。 IIFEは(私的)変数のカプセル化を扱いますが、Objectは一緒に属するものを結合/グループ化する構造を提供します。 IIFEは構造体を提供せず、オブジェクトはカプセル化を提供しません。あなたの質問は、機能や変数を好むことを求めるようなものですか?両方が必要な場合は、おそらくそれらを組み合わせます。 – Thomas