Любая причина не использовать $(test).stuff(); vs test.stuff(); учитывая, что test = $('something');?
Google не помогает мне понять это. Есть ли причина не делать следующее:
var test = $('something');
$(test).stuff();
Вместо этого так:
var test = $('something');
test.stuff();
В основном, я считаю, что код намного легче читать, когда он находится в формате селектора jQuery, даже если это не обязательно.
Оба метода работают одинаково.
Спасибо!
Ответы
Ответ 1
Первый может быть значительно медленнее, в зависимости от размера объекта. Если вы используете его только пару раз, это не будет иметь особого значения, но если вы его используете, возможно, вы можете использовать эту популярную схему именования:
Если переменная содержит объект jQuery, добавьте имя переменной $
. Назовите все остальное нормально и не называйте переменные, которые не содержат объекты jQuery с помощью $. Поэтому вы должны написать:
var $test = $('something');
$test.stuff();
Что дает понять, что тест является объектом jQuery, если вы выполняете одно и то же соглашение об именах.
Ответ 2
Это из документов jQuery:
Cloning jQuery Objects
When a jQuery object is passed to the $() function, a clone of the object is created. This new jQuery object references the same DOM elements as the initial one.
Таким образом, разница заключается в том, что jQuery делает клонированием объекта jQuery, передаваемого функции $() (что создает небольшое количество дополнительных накладных расходов).
Ссылка: http://api.jquery.com/jQuery/
Ответ 3
test.stuff()
работает быстрее.
Вот некоторые сравнительные данные: http://jsperf.com/selector-variation-test
Ответ 4
Вы получите удар по производительности, без уважительной причины, сделав это первым способом. Причина этого в том, что вы "re-jQueryifying" это. Я рекомендую написать это следующим образом: var $test = $('something');
очень ясно, что эта переменная является объектом jQuery, когда вы это делаете.
Ответ 5
Я не верю, что первый метод правильный, я думаю, как только вы объявили переменную именно это имя. Если вам нужен аналогичный синтаксис, вы можете объявить переменную как $test
и быть в порядке.