JavaScriptアドバンストプログラム設計の関数表現式の私有変数の強化のモジュールモード7.4.3ノートを言います.
2558 ワード
モジュールモードをさらに改良した人がいます.すなわち、オブジェクトに戻る前に強化コードを追加します.この強化されたモジュールモードはあれに適しています.
いくつかの単一の例は、いくつかの属性および(または)方法を追加して強化しなければならない場合である必要がある.下を見てください
の例です
を選択します.
必要な違いは、名前付き変数appの作成プロセスです.これはBaseComponentのインスタンスでなければなりません.この実例は実際には
は、アプリオブジェクトのローカル変数バージョンです.その後、私たちはまた、プライベート変数にアクセスできる共有方法をアプリオブジェクトに追加しました.
最後のステップは、appオブジェクトを返します.結果はまだグローバル変数apprationに値を与えます.
7.5小結はJavaScriptプログラミングにおいて、関数式は非常に有用な技術である.関数式を使用すると、関数に名前を付ける必要がなく、動的プログラミングが可能になります.匿名関数は、ラムダ関数とも呼ばれ、JavaScript関数を使用する強力な方法である.関数式の特徴を以下にまとめた.湖南省にある地名 関数宣言とは異なる関数表現です.関数宣言には名前が必要ですが、関数式は必要ありません.名前のない関数表現は匿名関数とも呼ばれます.湖南省にある地名 どのように関数を参照するかを確認できない場合、再帰関数は複雑になります.湖南省にある地名 再帰関数は常にargments.calleeを使用して再帰的に自身を呼び出すべきであり、関数名を使用しないでください.関数の内部に他の関数が定義されると、クローズドが作成されます.関数内部を含むすべての変数にアクセスする権限があります.原理は以下の通りです.湖南省にある地名 バックグラウンド実行環境において、クローズドされたロールドメインチェーンは、自身のロールドメイン、関数を含むロールドメイン、およびグローバルロールドメインを含む.湖南省にある地名 通常、関数の作用領域およびそのすべての変数は、関数実行終了後に破棄されます.湖南省にある地名 しかし、関数がクローズドバックに戻ると、この関数のスコープはメモリ内に存在しなくなるまで保存されます.クローズド・パケットを使用すると、JavaScriptでブロックレベルのスコープ(JavaScript自体にブロックレベルのスコープがない概念)を模仿することができます.要点は以下の通りです.湖南省にある地名 関数を作成してすぐに呼び出します.コードを実行することもできますし、関数への参照をメモリに残しません.湖南省にある地名 その結果、関数内部のすべての変数は直ちに破壊されます.作用領域(すなわち外部作用領域)を含む変数に特定の変数の割り当て値を与えない限り、その変数は破壊されます.クローズドは、オブジェクト内のプライベート変数を作成するためにも使用できます.関連する概念と要点は以下の通りです.湖南省にある地名 JavaScriptには正式なプライベートオブジェクト属性の概念がないとしても、閉じられたパケットを使用して公有方法を実現することができ、公有法によって作用領域に定義された変数にアクセスすることができる.湖南省にある地名 プライベート変数にアクセスできる公開方法を特権方法といいます.湖南省にある地名 コンストラクターモード、プロトタイプパターンを使用して、ユーザー定義型の特権的な方法を実現することができ、モジュールモード、強化されたモジュールモードを使用して、単例の特権的な方法を実現することもできる.JavaScriptの関数式とクローズドは非常に有用な特性であり、それらを利用して多くの機能を実現することができます.ただし、クローズドを作成するには、追加の機能領域を維持する必要がありますので、それらを過剰に使用するとメモリが大量に使われる可能性があります.
いくつかの単一の例は、いくつかの属性および(または)方法を追加して強化しなければならない場合である必要がある.下を見てください
の例です
var singleton = function(){
//
var privateVariable = 10;
function privateFunction(){
return false;
}
//
var object = new CustomType();
// /
object.publicProperty = true;
object.publicMethod = function(){
privateVariable++;
return privateFunction();
};
//
return object;
}();
前のモジュールモードの例でのappicationオブジェクトがBaseComponentの例でなければならないなら、を選択します.
var application = function(){
//
var components = new Array();
//
components.push(new BaseComponent());
// application
var app = new BaseComponent();
//
app.getComponentCount = function(){
return components.length;
};
app.registerComponent = function(component){
if (typeof component == "object"){
components.push(component);
}
};
//
return app;
}();
この書き換え後のアプリケーションの一例では、まず先の例のようにプライベート変数が定義されています.主必要な違いは、名前付き変数appの作成プロセスです.これはBaseComponentのインスタンスでなければなりません.この実例は実際には
は、アプリオブジェクトのローカル変数バージョンです.その後、私たちはまた、プライベート変数にアクセスできる共有方法をアプリオブジェクトに追加しました.
最後のステップは、appオブジェクトを返します.結果はまだグローバル変数apprationに値を与えます.
7.5小結はJavaScriptプログラミングにおいて、関数式は非常に有用な技術である.関数式を使用すると、関数に名前を付ける必要がなく、動的プログラミングが可能になります.匿名関数は、ラムダ関数とも呼ばれ、JavaScript関数を使用する強力な方法である.関数式の特徴を以下にまとめた.湖南省にある地名 関数宣言とは異なる関数表現です.関数宣言には名前が必要ですが、関数式は必要ありません.名前のない関数表現は匿名関数とも呼ばれます.湖南省にある地名 どのように関数を参照するかを確認できない場合、再帰関数は複雑になります.湖南省にある地名 再帰関数は常にargments.calleeを使用して再帰的に自身を呼び出すべきであり、関数名を使用しないでください.関数の内部に他の関数が定義されると、クローズドが作成されます.関数内部を含むすべての変数にアクセスする権限があります.原理は以下の通りです.湖南省にある地名 バックグラウンド実行環境において、クローズドされたロールドメインチェーンは、自身のロールドメイン、関数を含むロールドメイン、およびグローバルロールドメインを含む.湖南省にある地名 通常、関数の作用領域およびそのすべての変数は、関数実行終了後に破棄されます.湖南省にある地名 しかし、関数がクローズドバックに戻ると、この関数のスコープはメモリ内に存在しなくなるまで保存されます.クローズド・パケットを使用すると、JavaScriptでブロックレベルのスコープ(JavaScript自体にブロックレベルのスコープがない概念)を模仿することができます.要点は以下の通りです.湖南省にある地名 関数を作成してすぐに呼び出します.コードを実行することもできますし、関数への参照をメモリに残しません.湖南省にある地名 その結果、関数内部のすべての変数は直ちに破壊されます.作用領域(すなわち外部作用領域)を含む変数に特定の変数の割り当て値を与えない限り、その変数は破壊されます.クローズドは、オブジェクト内のプライベート変数を作成するためにも使用できます.関連する概念と要点は以下の通りです.湖南省にある地名 JavaScriptには正式なプライベートオブジェクト属性の概念がないとしても、閉じられたパケットを使用して公有方法を実現することができ、公有法によって作用領域に定義された変数にアクセスすることができる.湖南省にある地名 プライベート変数にアクセスできる公開方法を特権方法といいます.湖南省にある地名 コンストラクターモード、プロトタイプパターンを使用して、ユーザー定義型の特権的な方法を実現することができ、モジュールモード、強化されたモジュールモードを使用して、単例の特権的な方法を実現することもできる.JavaScriptの関数式とクローズドは非常に有用な特性であり、それらを利用して多くの機能を実現することができます.ただし、クローズドを作成するには、追加の機能領域を維持する必要がありますので、それらを過剰に使用するとメモリが大量に使われる可能性があります.