}
var oldAddPhotoMethod = old.AddPhoto;
my.AddPhoto = function () {
// クローン作成後、もちろん、引き続き oldAddPhotoMethod
}
return my
} (blogModule); と呼ぶこともできます。
このメソッドは柔軟ですが、柔軟性も必要です。実際、属性オブジェクトやオブジェクトの関数はまったくコピーされず、同じオブジェクトへの参照がもう 1 つあるだけなので、古いオブジェクトがそれを変更すると、クローンされたオブジェクトが所有する属性または関数も変更されます。この問題を解決するには再帰を使用する必要がありますが、関数の割り当てに再帰を使用するのは簡単ではないため、関数を再帰するときにそれに応じて評価します。何があっても、この記事にこの方法を載せておきますので、皆さんも使用する際には注意してください。
ファイル間でプライベート オブジェクトを共有する
上記の例を通じて、モジュールが複数のファイルに分割されている場合、各ファイルは同じ構造、つまり、匿名関数内のプライベート オブジェクトを保証する必要があることがわかります。各ファイルは相互アクセスできないので、使用する必要がある場合はどうすればよいでしょうか? まずコードの一部を見てみましょう:
var blogModule = (function ( my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function () {
delete my ._private;
my._seal を削除;
my._unseal を削除
},
_unseal = my._unseal || ;
my._seal = _unseal;
} (ブログモジュール || {}); 🎜>どのファイルでもローカル変数 _private に属性を設定し、その設定は他のファイルにすぐに有効になります。このモジュールがロードされると、アプリケーションは blogModule._seal() を呼び出してモジュールを「ロック」し、内部の _private への外部アクセスを防ぎます。このモジュールを再生成する必要がある場合、アプリケーションのライフサイクル中のファイルは _unseal() を呼び出して「ロック解除」し、新しいファイルをロードできます。ロード後、_seal() を再度呼び出して「ロック」します。
サブモジュール
最後で簡単な使用方法は、サブモジュールを作成することです
コードをコピーします
} () );
非常に簡単ですが、サブモジュールにも一般的なモジュールの高度な使用方法がすべて備わっており、どのサブモジュールでも再度使用できることを説明したいために入れました。上記の方法。
概要
上記のメソッドのほとんどは、相互に組み合わせて使用できます。一般に、システムを設計する場合は、疎結合拡張機能、プライベート ステート、サブモジュールなどのメソッドを使用できます。さらに、ここではパフォーマンスの問題については言及しませんでしたが、モジュール モードは効率的で、コードが少なく、読み込み速度が速いと思います。疎結合拡張機能を使用すると、並列読み込みが可能になり、ダウンロード速度が向上します。初期化時間は遅くなる可能性がありますが、適切なパターンを使用する価値があります。
参考記事:
http://yuiblog.com/blog/2007/06/12/module-pattern/
http://www.adequatelygood.com/2010/3/JavaScript-Module- Pattern-In-Depth
同期と推奨事項
この記事はディレクトリ インデックスに同期されています: JavaScript シリーズの詳細な理解
オリジナル、翻訳、再版を含む JavaScript シリーズの記事の詳細な理解などの記事が役に立ちましたら、おじさんが書くモチベーションを高めるために、お勧めしてサポートしてください。