2017-08-31 1 views
0

Wenn jQuery verwendet, weiß ich, dass Sie eher ein Objekt gespeichert werden sollten als den DOM wiederholt quert:

// This is good 
var something = $(".some-class") 

Meine Frage des jQuery ist nicht $(this) ein ähnliches Performance-Problem hat?

// should I do this? 
var current_object = $(this) 

mit $(this): Soll ich das tun?

(Dies ist mein obligatorischer this ist verwirrend Witz)

Antwort

1

$(this) ist nicht frei. Es instanziiert ein neues jQuery-Objekt. Aber verglichen mit der Durchquerung des DOM ist es fast kostenlos.

Diese Ebene der Optimierung ist normalerweise nicht erforderlich. Schreiben Sie Code, der lesbar ist, und optimieren Sie diese Art von Verhalten nur, wenn es zu Leistungsengpässen kommt.

Meine Regel, für etwas wie var foo = $(this) ist: Verwenden Sie, was in der Situation einfacher zu lesen ist.

$(this) hat eine ziemlich klare Bedeutung, also benutze es wenn es Sinn macht. Aber wenn Sie etwas tun, wo es Sinn macht, $(this) mit einem anderen Namen zu nennen, tun Sie das.

Optimieren Sie sich für die Zeit Ihres Kollegen. Es ist die wertvollste Ressource in der Gleichung.

+0

Wenn '$ (this)' ein neues jQuery-Objekt einleitet, dann würde 'var foo = $ (this)' einfach eine Kopie davon machen? Das klingt, als würde es die Performance * wirklich * verletzen, anstatt zu helfen, denn jetzt haben Sie zwei identische Objekte. – Scribblemacher

+0

Wenn Sie es nur einmal benutzen, würde das die Leistung beeinträchtigen. Es würde Leistung helfen, wenn Sie es mehr als einmal verwenden. Dasselbe gilt für Ihr '$ (" selector ")' Beispiel - die Variable hilft nur, wenn Sie sie mehrmals verwenden. – Flimzy

+0

Auch wenn es mehrmals verwendet wird, wie würde es helfen? Anders als '$ ([Selektor])' würde ich annehmen, dass '$ (this)' nicht das DOM transversieren muss. Wären 'foo' und' $ (this) 'grundsätzlich nicht auf einem niedrigen Niveau? Vielleicht verstehe ich die Natur von jQuery-Objekten nicht. (Ich weiß, wir reden hier über winzige Leistungsunterschiede; ich bin nur neugierig) – Scribblemacher

Verwandte Themen