Pregunta

Recientemente he hecho la pregunta folloiwng en relación con jQuery chaning:

Es hay una manera preferida de formateo de cadenas de jQuery para hacerlos más legibles?

Un número de personas que respondió con la sugerencia de que tal vez he reducido la cantidad de encadenamiento dentro de la instrucción, y en su lugar los objetos almacenados en las variables que llevan a cabo, lo que tiene sentido para mí.

Sin embargo, mi opinión es que los objetos dentro de una cadena que ya se llevan a cabo en una pila (de clases), por lo que es el almacenamiento en caché / almacenamiento de los resultados en una variable no efectivamente re-almacenamiento que utiliza más memoria?

Un comentario sobre uno de los postes parecía indicar que puede que no haya demasiado de un impacto en el rendimiento (si lo hay), por lo que sería feliz para almacenar en caché como se sugiere si sería mucho más fácil de leer.

Y también, si estamos utilizando el almacenamiento en caché, ¿esto no entonces comenzar a limitar la utilidad de .end() y .andSelf()?

¿Fue útil?

Solución

Los objetos se almacenan generalmente como referencias - punteros a ubicaciones en la memoria. Dos variables tanto la celebración de un mismo objeto no duplicar todos los datos del objeto - que sólo tienen ambos punteros a la misma ubicación de memoria donde se encuentran los datos objeto real. Por lo tanto, almacenando el objeto en una variable no tendrá mucho de un impacto en el rendimiento en absoluto; nada significativo.

Otros consejos

La adición a la respuesta de @ Dav, hay momentos en que el almacenamiento de objetos jQuery en las variables será una buena cosa. clásico ejemplo:

$('#something div').each( function() {
    $(this).css({'background-color':'#afa'});
    // do some stuff;
    $(this).slideDown('fast');
}

Una mejor manera:

$('#something div').each( function() {
    var $this = $(this);
    $this.css({'background-color':'#afa'});
    // do some stuff;
    $this.slideDown('fast');
}

esta manera se evita crear objetos jQuery siempre que llame $.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top