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

Rya*_*wen 11 javascript performance jquery

谷歌没有帮我解决这个问题.是否有任何理由不执行以下操作:

var test = $('something');
$(test).stuff();
Run Code Online (Sandbox Code Playgroud)

而不是这样做:

var test = $('something');
test.stuff();
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Pau*_*aul 12

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

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

var $test = $('something');
$test.stuff();
Run Code Online (Sandbox Code Playgroud)

这表明如果你一直遵循相同的命名约定,test是一个jQuery对象.


Jas*_*per 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.
Run Code Online (Sandbox Code Playgroud)

所以区别在于jQuery正在克隆传递给$()函数的jQuery对象(这会产生少量的额外开销).

链接:http://api.jquery.com/jQuery/


Ali*_*guy 5

test.stuff() 是比较快的.

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