链式jQuery对象在什么条件下提供性能提升?

bul*_*ley 5 javascript jquery

我正在使用一些代码来添加和删除同一对象上的各种CSS类.代码看起来像:

function switch_states(object_to_change) {
  if(object_to_change.hasClass('ready') {
    object_to_change.removeClass('ready');
    object_to_change.addClass('not_ready');
  } else {
    object_to_change.removeClass('not_ready');
    object_to_change.addClass('ready');
  }
}
Run Code Online (Sandbox Code Playgroud)

我怀疑我可能会把这两个snippits链接成类似的object_to_change.removeClass('ready').addClass('not_ready');但是我不得不怀疑:除了易读性和neato因素之外,这是否会给我带来任何性能提升?

我的问题:链式对象是否比两个非链式对象更快地完成工作?如果是这样,为什么?如果不是,在什么时候使用链式对象变得比不同的对象更有效 - 即在链式jQuery对象在什么条件下提供性能提升?

And*_*ndy 6

链式对象是否会比两个非链式对象更快地完成工作?如果是这样,为什么?

链接对象从选择器开始时更快,并且链接防止选择器多次针对DOM运行(相对昂贵的操作).

慢点:

$(".myClass").val(123);
$(".myClass").addClass("newClass");
Run Code Online (Sandbox Code Playgroud)

快点:

$(".myClass")
    .val(123)
    .addClass("newClass");
Run Code Online (Sandbox Code Playgroud)

在变量中缓存选择器与链接具有相同的好处(即防止昂贵的DOM查找):

var $selctor = $(".myClass");
$selector.val(123);
$selector.addClass("newClass");
Run Code Online (Sandbox Code Playgroud)