2012-12-13 24 views
11

Bunlar hız açısından eşdeğer midir?jQuery zincirleme performansı

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

veya

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

Hatta ikinci daha iyi olur o kod daha okunabilir hale getirmek için ayrı yazmayı daha hızlı olur?

cevap

26

Hayır, ikisi hızda eşdeğer değil. Her zaman yeni jQuery nesnesi oluşturur. Ve ne this olduğuna bağlı olarak, bu karmaşık bir işlem olabilir. Böylece ikinci form daha hızlıdır. Eğer aradaki kod diğer hatları var çünkü zincir işlemleri, ayrıca nesneyi önbelleğe alabilir yapamıyorsanız okunabilirliği için size

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

olarak yazabilirsiniz

Not. Bu olağandır: Eğer

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

hattı bölünmüş olabilir okunabilirliği amacıyla

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

Ayrıca doğru biçimlendirildiğinde okunması daha kolay IMO –

+3

Tam bir açıklama! –

5

bu gerektiğini biliyorum:

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

Ve notu da o attr argüman olarak bir harita alabilir bir yorum yapıldı ama boşluk bir anlam ifade etmeyecekti.