Это прямоприменяемый защищенным битой коды , Давайте разбить его:
(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. Когда Capturing, события перемещаются из верхней части DOM внутрь. Когда Bubbling, они перемещаются изнутри DOM наружу. Используя false
, вы хотите обработать это в своей фразе bubbling
.
В myFunct
, который называется каждый раз, когда DOMContentLoaded
событие происходит на document
, у нас есть одна строка кода, который первым объявляет новый объект под названием options
. Этот объект пуст, не имеет членов.
Во-вторых, вы передаете два аргумента методу attach
объекта PhotoSwipe
. Первый метод - это селектор. Что он ищет в DOM для элементов, которые соответствуют #Gallery a
, что означает любой элемент привязки внутри элемента, имеющего идентификатор «Галерея». Это означало бы, все следующий:
<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
делает внутренне, неизвестно на данный момент, так как этот код здесь не представлен.
Я нашел, что это точная копия примера, который вы можете скачать с помощью библиотеки. – Battery