のは、我々はjQueryのプラグイン(それらのそれぞれ別々のファイルで)以下していると仮定しましょう:私は、標準のjQueryプラグインのパターンを使用し名前空間のjQueryプラグイン
$.fn.foo
$.fn.foo.bar
$.fn.foo.baz
を。最初のものは、実際には、その名前空間の残りのプラグインへのプロキシまたは "ファサード"です。
var context = this; // context is equal to $('#el') $(context).foo['bar'].apply(context); $(context).foo['baz'].apply(context);
を私はのみ($.fn.foo
なし)$('#el').foo.bar()
を呼び出したいときに、2つの問題があります。ボンネットの下に私も呼んで、私は$('#el').foo()
を呼び出すたとえば 、、。最初の問題は、$.fn.foo
名前空間がないことですが、私はそれを作成することができるので、実際には問題ありません。第二の問題はの中に$.fn.foo.bar
はdocument
と等しいですが、私は$('#el')
に等しくなりたいと思います。どうやってやるの?
ので、両方が動作するはずです、短い長い話を作る:
$('#el').foo(); // This also calls foo.bar and foo.baz under the hood $('#el').foo.bar(); // I'm calling foo.bar explicitly
「$(コンテキストを呼び出していないです).foo ['baz']。apply(context); "冗長は "$(コンテキスト).foo ['baz']; –
@Keithもし彼がそれをこのように呼び出すなら、 'this'は呼び出された要素ではなく文書になります。 –
このような名前空間は激怒します。モジュラーコードのような実用的なアーキテクチャーを書いてください。あるいは機能的なパターンやOOパターンを使用してください。 – Raynos