Производительность цепочки jQuery

Являются ли эти эквиваленты в терминах скорости?

$(this).attr("date",date);
$(this).attr("date_start",date_start);
$(this).attr("heure_start",heure_start);

или

$(this).attr("date",date).attr("date_start",date_start).attr("heure_start",heure_start);

Даже если вторая быстрее, лучше ли ее написать отдельно, чтобы сделать код более удобочитаемым?

Ответ 1

Нет, они не эквивалентны по скорости.

$(this) каждый раз создает новый объект jQuery. И в зависимости от того, что есть this, это может быть сложная операция.

Итак, вторая форма быстрее.

Обратите внимание, что для чтения вы можете записать его как

$(this)
    .attr("date",date)
    .attr("date_start",date_start)
    .attr("heure_start",heure_start);

Если вы не можете связать операции, потому что между ними есть другие строки кода, вы также можете кэшировать объект. Это обычно:

var $this = $(this);
$this.attr("date", date);
$this.attr("date_start", date_start);
$this.attr("heure_start", heure_start);

Также обратите внимание, что attr может принимать карту в качестве аргумента:

$(this).attr({
    date: date,
    date_start: date_start,
    heure_start: heure_start
});

Ответ 2

Для удобства чтения вы можете разделить строку на

$(this)
    .attr("date",date)
    .attr("date_start",date_start)
    .attr("heure_start",heure_start);

Я знаю, что это должен был быть комментарий, но расстояние не имело бы смысла как один.