これは、自己実行型の保護されたコードです。それを分解しましょう:
(function(window, PhotoSwipe){
...
}(window, window.Code.PhotoSwipe));
括弧を使用すると、他に何も呼び出さずに、コードが単独で実行されます。
これにより、外部コードへの参照が作成され、外部コードによって改ざんされることはありませんwindow
。window.Code.PhotoSwipe
したがって、私たちの親の中にPhotoSwipe
は、の保護されたエイリアスがありwindow.Code.PhotoSwipe
ます。またwindow
、名前は変わりませんが、外部グローバルwindow
オブジェクトへの保護された参照でもあります。
次の行であるaddEventListener
行は、無名関数を名前付き関数として出力するように書き直すことができます。
function myFunc() {
var options = {},
instance = PhotoSwipe.attach( window.document.querySelectorAll('#Gallery a'), options );
}
document.addEventListener('DOMContentLoaded', myFunc, false);
addEventListener
これは元のコードと機能的に同じであることに注意してください。関数を呼び出しから引き出して名前を付けただけです。
addEventListener
特定のイベントを処理するためのコールバック関数をアタッチします。この場合、イベントを処理していますDOMContentLoaded
。このイベントはdocument
オブジェクトでリッスンされています。このイベントが聞こえたときはいつでも、に電話して応答しmyFunc
ます。
最後のパラメータ、false
は、キャプチャとバブリングを扱います。これらは、イベントがDOM全体に伝播する2つのメソッドです。キャプチャすると、イベントはDOMの上部から内側に移動します。バブリングすると、DOMの内側から外側に移動します。フレーズfalse
でこれを処理したい状態を使用します。bubbling
でイベントが発生するmyFunct
たびに呼び出される、内に、最初に。と呼ばれる新しいオブジェクトを宣言する1行のコードがあります。このオブジェクトは空で、メンバーはありません。DOMContentLoaded
document
options
次に、オブジェクトのattach
メソッドに2つの引数を渡します。PhotoSwipe
最初の方法はセレクターです。DOMで一致する要素を検索します#Gallery a
。つまり、IDが「Gallery」の要素内のアンカー要素を検索します。これは、次のすべてを意味します。
<div id="Gallery"><a href="#">Foo</a></div>
または
<div id="Gallery">
<div class="picture">
<a href="#">Open</a>
</div>
<div class="picture">
<a href="#">Open</a>
</div>
</div>
これは、作成した空のオブジェクトに関連付けられています。PhotoSwipe
そのコードはここに提示されていないため、この時点では内部で何が行われているのかは不明です。