JavaScript / MooTools - лучше сохранить элемент в свойстве объекта, чем каждый раз получать доступ с помощью $ ('elem')? - PullRequest
2 голосов
/ 27 июля 2010

С точки зрения скорости / эффективности памяти, имеет ли смысл сохранять элемент (полученный с помощью $) в переменную в объекте или использовать $ для доступа к нему каждый раз?

Имеет ли доступ к свойствам объекта (особенно если вложено несколько уровней - объект в объекте) выполняется быстрее, чем при использовании $?

1 Ответ

5 голосов
/ 27 июля 2010

кэширующие селекторы, которые часто используются - это всегда хорошая идея.пространство имен за глубоким объектом на несколько уровней создает более длинную, чем необходимая глобальную цепочку областей видимости, imo.Я склонен кешировать селекторы в простых замыканиях или используя хранилище элементов mootools.

например, если у вас есть ссылка в div, которая находит родителя, затем находит 2 элемента вниз и первый img, и вы можете видеть, как пользователь нажимает на нее несколько раз, вы можете сделать что-то вроде этого:

document.id("somelink").addEvent("click", function() {
    var targetImg = this.retrieve("targetImg") || this.store("targetImg", this.getParent().getNext().getNext().getElement("img.close"));
    targetImg.fade(.5);
...
});

при первом щелчке он ищет целевой img и сохраняет его под хранилищем ссылки с ключом targetImg, при любых последующих щелчках будет использоваться сохраненная ссылка.хранилище mootools, которое создается во время расширения элемента и назначения uid.это просто простой объект за замыканием, поэтому он не находится в проприетарном свойстве элемента, который будет замедлять доступ в IE и т. д., и его нет ни в одном окне.свойство.

если вы рассматриваете философию кодирования mootools в целом - т.е. код с классом - есть несколько вещей, которые (не) написаны лучшие практики при написании класса / плагина mootools.

если это относится к одному элементу, тогда установите this.element = document.id(element); - сохранить ссылку.если это массив, то аналогично вы делаете кеширование this.elements = document.getElements(this.options.selector);

, поэтому всегда сохраняйте ссылку на главный селектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...