#javascript
Возник вопрос о правильном подходе создания плагина на js. Пример работы на Plunker, а так же код на github. Суть работы плагина: на странице есть изображения, при клике на которые открывается модальное окно; в этом модальном окне есть Слайдер и Превьюшки с этими изображениями, которые мы можем листать, переключить и т.д.; в слайдер можем передать параметры отображение кол-ва превью и возможность их отключить; на одной странице можем использовать плагин несколько раз. Проблема: когда используется два и более раз, то плагин ломается и отображет только последнюю галерею. (function() { let gallery_1 = new SkySlider('.first-gallery'); let gallery_2 = new SkySlider('#second-gallery', { showThumbnails: true, thumbnailsItemCount: 6, }); })();
Ответы
Ответ 1
Вместо хранения this в замыкании, как это сделано у вас (function() { // for `this` let _; function SkySlider(selector = null, options = null) { _ = this; } // остальные функции использующие _ в качестве this })() Можно все вспомогательные функции поместить в прототип функции SkySlider (function() { function SkySlider(selector = null, options = null) {} SkySlider.prototype.init = function () {} SkySlider.prototype.otherMethod = function () {} // либо по другому делаем функцию доступной из вне window.SkySlider = SkySlider })() В таких методах this будет ссылать на текущий экземпляр класса и не перезаписывать какую-то глобальную переменную
Комментариев нет:
Отправить комментарий