Как подойти к сохранению экземпляра объекта для последующего повторного использования в плагине vanilla js - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема с преобразованием некоторых старых плагинов jQuery в Vanilla JS.Возьмите, например, плагин owlCarousel -> https://github.com/OwlCarousel2/OwlCarousel2/blob/develop/src/js/owl.carousel.js

$.fn.owlCarousel = function(option) {
    var args = Array.prototype.slice.call(arguments, 1);

    return this.each(function() {
        var $this = $(this),
            data = $this.data('owl.carousel');

        if (!data) {
            //WHERE THE MAGIC HAPPENS!
            data = new Owl(this, typeof option == 'object' && option);
            $this.data('owl.carousel', data);

            $.each([
                'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'
            ], function(i, event) {
                data.register({ type: Owl.Type.Event, name: event });
                data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {
                    if (e.namespace && e.relatedTarget !== this) {
                        this.suppress([ event ]);
                        data[event].apply(this, [].slice.call(arguments, 1));
                        this.release([ event ]);
                    }
                }, data));
            });
        }

        if (typeof option == 'string' && option.charAt(0) !== '_') {
            data[option].apply(data, args);
        }
    });
};

. В определении плагина я сохраняю new Owl('stuff'); в $el.data и получаю экземпляр объекта в более поздний момент для вызова методов на нем и т. Д.

const owlObj = $owl.data('owl.carousel');

Это также позволяет мне иметь несколько экземпляров плагина, доступных через элементы DOM.

Эта парадигма выбрасывается из окна в Vanilla JS?Как лучше всего хранить экземпляры объектов и извлекать их позднее?

Приветствия!

...