Создание своей библиотеки. Создание двух одинаковых объектов. Как избежать?
Я делаю свою библиотеку для работы с css свойствами и dom элементами и столкнулся с проблемой при работе с функцией для изменения параметра (в моем случае тестирую с opacity).
Функция у меня function _i(id) { this.flowInterval = null; this.flowProperty = null; this.flowValue = null; this.flowwhereTo = null; this.flowObject = null; this.flowType = null; this.objects = []; this.instance = null; } Я убрал условия и распределение по селекторам, чтобы не нагружать код. Как вы видите, у меня есть массив objects. Именно в него загружаются все выбранные элементы и с ним работают методы прототипа. Так вот, я столкнулся с тем, что даже, к примеру, для _i('#one').flow('opacity', '0'); _i('#one').flow('opacity', '1'); Создается два разных объекта _i То есть, в теории метод flow очищает все переменные, что указаны в функции _i (т.е.) this.flowInterval = null; this.flowProperty = null; this.flowValue = null; this.flowwhereTo = null; this.flowObject = null; this.flowType = null; this.objects = []; this.instance = null; и задает им новые параметры. Суть метода flow в изменении параметра, к примеру opacity. В теории все в порядке. На практике внезапно оказывается, что у меня два разных объекта _i('#one'), и оба они разрывают элемент с id="one" на две стороны и на выходе - мерцающий до бесконечности элемент. По моему, я не совсем корректно понимаю создание и принцип работы библиотек, да? Если я не ошибаюсь, функция _i должна возвращать(!) выбранный(ые) элемент(ы), а не просто назначать их в массив, да? Зачем я создал массив, в который через push() забиваются новые элементы? Чтобы иметь возможность выбирать несколько (к примеру с одинаковым классом) объектов и после через цикл прогонять их по методам (к примеру изменение css свойств) На практике у меня костыль на костыле костылем погоняет. Именно в этом методе, с другими вариант с массивом работает вполне нормально. Если нужны подробности метода flow и внутренности _i, могу запостить. |
Вот выхлоп в консоли, который я сделал, чтобы вы поняли, о чем я.
Как вы видите выше, у каждого экземпляра _i есть instance Это для присваивания имени, так сказать. В данном случае я создал эту переменную для теста. И на выхлопе получаю это: Код:
Плюс и минус плюс и минус. И мерцает. |
Для тех, кто будет испытывать те же затруднения.
Вполне нормальный вариант создать глобальный объект и в него уже записывать интервалы. После искать их и удалять. |
Часовой пояс GMT +3, время: 18:51. |