Любая причина не использовать $(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/

Ответ 4

Вы получите удар по производительности, без уважительной причины, сделав это первым способом. Причина этого в том, что вы "re-jQueryifying" это. Я рекомендую написать это следующим образом: var $test = $('something'); очень ясно, что эта переменная является объектом jQuery, когда вы это делаете.

Ответ 5

Я не верю, что первый метод правильный, я думаю, как только вы объявили переменную именно это имя. Если вам нужен аналогичный синтаксис, вы можете объявить переменную как $test и быть в порядке.