任何不使用$(test).stuff()的原因; vs test.stuff();鉴于test = $('something');?

时间:2011-07-29 20:17:52

标签: javascript jquery performance

谷歌没有帮我解决这个问题。有没有理由不这样做:

var test = $('something');
$(test).stuff();

而不是这样做:

var test = $('something');
test.stuff();

基本上我发现代码在jQuery选择器格式中更容易阅读,即使它不需要。

这两种方法看起来都是一样的。

谢谢!

5 个答案:

答案 0 :(得分:12)

第一个可能会明显变慢,具体取决于对象的大小。如果你只使用它几次就不会有那么大差别,但如果你经常使用它,你可以使用这种流行的命名方案:

如果变量包含jQuery对象,则在变量名前加上$。通常命名其他所有内容,并且不要将任何不包含jQuery对象的变量命名为$。所以你会写:

var $test = $('something');
$test.stuff();

如果您遵循相同的命名约定,那么很明显test是一个jQuery对象。

答案 1 :(得分:7)

这是来自jQuery Docs:

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/

答案 2 :(得分:5)

test.stuff()更快。

以下是一些基准证据:http://jsperf.com/selector-variation-test

答案 3 :(得分:4)

你会以第一种方式做到这一点并没有任何理由。这样做的原因是你“重新jQueryifying”它。我建议这样写它var $test = $('something');很明显,当你这样做时,变量是一个jQuery对象。

答案 4 :(得分:1)

我不相信第一种方法是正确的,我认为一旦你宣布了一个变量,它只是那个名字。如果你想要类似的语法,你可以将变量声明为$test并且没问题。