5

私は JavaScript/jQuery プラグイン開発でおなじみのパターンを見てきました (Modernizr はこの最初の例を使用しています)。関数は IIFE にうまくラップされ、ウィンドウオブジェクトでグローバルに定義されます。次のようにして、プラグイン/スクリプトをグローバルにアクセスできるようにすることをお勧めします。

window.myPluginName = (function (window, document, undefined) {
  // Plugin logic
})(window, document);

一部のスクリプト/プラグインは、それらが呼び出されたDOMまたはドキュメント/ファイルの他の場所にアクセスする必要があるため、これを尋ねます。プラグイン内では、これも時々見られます。

(function (window, document, undefined) {
  window.myPluginName = function () {
    // Plugin logic
  }
})(window, document);

そしてこれさえ:

(function (window, document, undefined) {
  var myPluginName = function () {
    // Plugin logic
  }
  window.myPluginName = myPluginName;
})(window, document);

私はセットアップの背後にある違いについて非常に興味をそそられます.もし私よりも経験豊富な誰かが開発に使用するのに最適なものについてアドバイスを提供するのに十分親切です. ありがとうございました!

4

1 に答える 1

2

簡単な答え:最も理にかなっているものを使用してください。

より長い答え:唯一の違いは割り当てが行われる場所ですが、機能的にはすべて同等です。それらのどれにも、他のものよりも利点も欠点もありません。

注:window現状では、関数内で が定義されていないため、最後の 2 つは機能しません。しかし、実際にはwindowオブジェクトを引数として IIFE に渡すと思います。

于 2013-08-12T11:10:41.863 に答える