モジュール紹介第一章
1582 ワード
モジュール管理が必要な理由は、JavaScriptの発展がますます速くなり、それが生まれた時の自己位置付けを超えたからです.モジュール管理の概念がないので、大型プロジェクトやファイル組織をする時には、非常にもつれます.このように多くのモジュール管理ツールが生まれます.モジュール化の主な特徴は:モジュール化、 を再利用できます.には変数とfunctionが封入されています.全体のnamastpaceとは接触していません. は、publicの利用可能な方法のみを暴露し、他のプライベート方法はすべて非表示 である.
実装
初級段階では、コードには様々な関数が溢れています.名前によって区別されます.function func 1(){}
対象の書き方
上記の汚染問題を解決したら、モジュールを一つの対象として作成できます.すべてのモジュールのメンバーはこの対象に入れます.
すぐに関数(Immedia tely-Invoked Function Expression、IIIIIIIIIIIIIIIIIIIFCE)or匿名のクローズドを実行します.
パラメータを送る必要がない場合や、特別に厳しい要求がない場合は、すぐに実行する関数を使用してもいいです.このインスタンスはメモリに一つのcopyしか存在しません.
実装
初級段階では、コードには様々な関数が溢れています.名前によって区別されます.function func 1(){}
function func2() {}
実際にこれらの関数はグローバル変数にマウントされています.使用時に直接呼び出すことができます.欠点は、グローバル変数を汚染しています.他のモジュールと変数名が衝突しないことを保証できません.また、モジュールメンバー間に直接関係が見えません.対象の書き方
上記の汚染問題を解決したら、モジュールを一つの対象として作成できます.すべてのモジュールのメンバーはこの対象に入れます.
var module1 = new Object({
_count: 0,
m1: function() {
//...
},
m2: function() {
//...
}
});
//
var module2 = {
_count: 0,
m1: function() {
//...
},
m2: function() {
//...
}
}
外部は変数名を定義することで、名前空間として機能しますが、同じ欠点があります.すべてのモジュールのメンバーが露出し、内部の状態は外部に書き換えられます.例えば、外部コードは直接に内部_を変えることができます.countの値すぐに関数(Immedia tely-Invoked Function Expression、IIIIIIIIIIIIIIIIIIIFCE)or匿名のクローズドを実行します.
パラメータを送る必要がない場合や、特別に厳しい要求がない場合は、すぐに実行する関数を使用してもいいです.このインスタンスはメモリに一つのcopyしか存在しません.
var module1 = (function() {
var _count = 0;
var m1 = function() { //...
};
var m2 = function() { //...
};
return {
m1: m1,
m2: m2
};
})();
このようにプライベート変数はよく保護され、公開された方法はreturnによって設定されます.欠点もあります.動的に方法を追加する時は面倒です.しかも内部のプライベート変数を変更できません. ...