JavaScriptでのモジュールのパターンを理解します
あなたはJavaScriptで発生する可能性があり、すべてのデザインパターン、モジュールのパターンは、おそらく最も普及遍布の的、充斥各处的です。しかし、それはまた、他の言語からの開発者に少し奇妙に見えることができます。
のは、それがどのように動作するか確認するために例を見てみましょう。私たちはこのようになりますユーティリティ機能のライブラリがあるとします。
VARバットマン= { アイデンティティ: "ブルース・ウェイン" 、 fightCrime:機能(){ はconsole.log( "ゴッサムのクリーンアップ" ); }、 goCivilian:関数(){ にconsole.log( + "として社会的なイベント参加" この.identity)を、 } }。
このバージョンは、 batman
完全に修理可能です。あなたはそれに呼び出すとき、それは犯罪と戦うことができます。しかし、それは重大な弱点を持っています。これ batman
の identity
プロパティは、公的にアクセス可能です。
アプリケーション内の任意のコードでは、潜在的にそれを上書きして引き起こす可能性が batman
誤動作します。例えば:
// いくつかのジョーカーは、あなたのコードベースでこれを入れ batman.identity =「狂乱狂人」。 // 出力:「狂乱狂人としての社会的なイベントに参加する」 (batman.goCivilian)。
状況のこれらの種類を回避するために、我々は、データの民間の特定の部分を維持するための方法が必要です。幸いなことに、JavaScriptは私たちだけのようなツールを提供します。私たちはきた 前であっても、それについて話をすぐに呼び出された関数式(生命維持):。
標準生命維持には、次のようになります。
(function () {
// Code goes here })();
生命維持の利点があることである任意の var
その中で宣言sが外の世界にアクセスできません。だから、どのように私たちを助けていますか?キーは、生命維持だけで、他の関数と同様に、戻り値を持つことができるということです。
VARバットマン=(関数(){ VARのアイデンティティ= "ブルース・ウェイン" 、 リターン{ fightCrime:関数(){ にconsole.log( "ゴッサムのクリーンアップ" ); }、 goCivilian:関数(){ にconsole.log(「出席+」として社会的なイベント)アイデンティティ; } }; })();
// 出力:未定義 にconsole.log(batman.identity)。 // 出力:「ブルース・ウェインなどの社会的なイベント参加」 batman.goCivilianを();
あなたが見ることができるように、我々は作るためにIFFEの戻り値を使用することができました batman
の公的にアクセス可能なユーティリティ機能を。そして同時に、私たちは、ことを確認することができた batman
のは、 identity
それを台無しにしたいすべてのピエロから秘密のまま。
モジュールのパターンを使用するとよいでしょうときは、不思議に思われるかもしれません。答えは、それがここに示されたもののような状況のためにうまく機能していることです。あなたのデータの一部のプライバシーを施行し、パブリックインターフェイスを提供するために、両方の必要がある場合は、そのモジュールのパターンは、おそらく良いフィット感です。
あなたが本当にデータのプライバシーを施行する必要があるかどうか、またはプライベートデータを示すために、命名規則を使用しているかどうかより良い方法ですが、それは、検討する価値があります。その質問への答えは、ケースバイケースで異なります。しかし、今、あなたは、必要に応じてデータのプライバシーを強制するために装備しています。
読んでくれてありがとう!
ジョシュ・クラントン