Una cosa che tutti i test di performance di runtime qui manca è un'altra considerazione importante:
larghezza di banda di rete.
Caching $(this)
in una variabile locale sarà generalmente diminuire la dimensione dello script, in particolare quando ridotte di (perché this
non può essere ridotto da quattro caratteri).
considerare: uscita minified
function hello(text) {
$(this).attr();
$(this).css();
$(this).data();
$(this).click();
$(this).mouseover();
$(this).mouseleave();
$(this).html(text);
}
hello('Hello world');
Chiusura del compilatore è
function hello(a){$(this).attr();$(this).css();$(this).data();$(this).click();$(this).mouseover();$(this).mouseleave();$(this).html(a)}hello("Hello world");
Ciò consente di risparmiare 39 byte (20%). Consideriamo:
function hello(name) {
var $this = $(this);
$this.attr();
$this.css();
$this.data();
$this.click();
$this.mouseover();
$this.mouseleave();
$this.html(name);
}
hello('Hello world');
L'uscita minified è
function hello(b){var a=$(this);a.attr();a.css();a.data();a.click();a.mouseover();a.mouseleave();a.html(b)}hello("Hello world");
Questo risparmia 74 byte (37%), quasi raddoppiando nostri risparmi byte. Ovviamente, i risparmi del mondo reale in script di grandi dimensioni saranno inferiori, ma è comunque possibile ottenere riduzioni significative delle dimensioni dello script tramite la memorizzazione nella cache.
Davvero, c'è solo un lato positivo per la memorizzazione nella cache $(this)
. Ottieni guadagni prestazionali minuziosi ma misurabili. Ancora più importante, è possibile ridurre il numero di byte che viaggiano sul filo, e che si traduce direttamente in più dollari perché faster page loads equal more sales.
Quando si guarda in questo modo, si potrebbe effettivamente dire che c'è una quantificabile dollaro costare a ripetere $(this)
e non caching esso.
'$ (questo)' ovviamente significa "' (questo) 'dollari". – BoltClock
Si dovrebbe sempre memorizzare nella cache, ma in questo esempio specifico, non è nemmeno necessario eseguirlo. Approfittate del concatenamento jQuery: '$ (this) .addClass ('fooClass'). Attr ('data bar', 'bar'). Css ('background-color', 'red');' –