1. Respetar la propiedad del objeto No añadir atributos a instancias o prototipos; No añadir métodos a instancias o prototipos; No redefinas métodos que ya existen. La mejor manera de hacerlo es no modificar nunca objetos que no sean tuyos. Poseer un objeto significa que tú lo creaste, como un tipo personalizado o un objeto literal que tú mismo creaste. Los arrays y documentos obviamente no son tuyos, existen antes de que tu código se ejecute. 2. Evitar variables globales Crear una variable global como mucho, permitiendo que otros objetos y funciones existan en ella. Echa un vistazo a los siguientes ejemplos:
//两个全局量——避免!! nombre var = "Nicholas"; función sayName(){ alerta(nombre);
} Este código contiene dos cantidades globales: el nombre de la variable y la función sayName(). De hecho, puedes crear un objeto que contenga ambos, como se muestra en el siguiente ejemplo:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alerta(this.name);
} }; 3. Evitar comparar con nulo Si el valor debe ser un tipo de referencia, use el operador instanceof para comprobar su constructor; Si el valor debe ser un tipo base, use typeof para comprobar su tipo; Si quieres que el objeto contenga un nombre específico de método, usa el operador typeof para asegurarte de que el método con el nombre especificado existe en el objeto. (Aquí recomiendo mi grupo de aprendizaje e intercambio de front-end web: 675498134, seas novato o un dios, te invito a venir a aprender, comunicarte y compartir productos secos de vez en cuando, incluyendo los últimos materiales y tutoriales de front-end que he compilado para dártelo, y hay expertos técnicos que explican el conocimiento de front-end en directo cada día. Tanto principiantes como amigos avanzados son bienvenidos a aprender, comunicarse juntos y avanzar juntos. ) 4. Usar constantes Aunque Javascrip{filter}t no tiene un concepto formal de constantes, es útil. Esta idea de separar los datos de la lógica de la aplicación puede modificar los datos sin arriesgarse a introducir errores. Echa un vistazo a los siguientes ejemplos: var Constantes = { INVALID_VALUE_MSG: "¡Valor inválido!", INVALID_VALUE_URL: "/errores/invalid.php" }; función validate(value){ si (!value){ alerta(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Evitar la búsqueda global Probablemente lo más importante para optimizar el rendimiento de los scripts es prestar atención a las búsquedas globales. Usar variables y funciones globales es definitivamente más caro que lo local porque implica búsquedas en la cadena de alcance. Echa un vistazo a la siguiente función: function updateUI(){ var imgs = document.getElementsByTagName("img"); para (var i=0, len=imgs.length; Yo < Len; i++){ imgs[i].title = document.title + " imagen " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Actualización completada.";
} La función puede parecer perfectamente correcta, pero contiene tres referencias al objeto documento global. Si hay varias imágenes en la página, la referencia al documento en el bucle for se ejecutará varias o incluso cientos de veces, cada vez que se realizará una búsqueda en cadena de ámbito. Creando una variable local que apunta al objeto documento, puedes mejorar el rendimiento de esta función limitando una consulta global una vez: function updateUI(){ var doc = document; var imgs = doc.getElementsByTagName("img"); para (var i=0, len=imgs.length; Yo < Len; i++){ imgs[i].title = doc.title + " image " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Actualización completada."; Aquí, primero coloca el objeto documento en la variable doc local; Luego sustituye el documento original por el resto del código. Comparado con la versión original, la función actual solo tiene una consulta global, que es definitivamente más rápida. 6. Otras precauciones para el rendimiento Los métodos nativos son más rápidos - Siempre que sea posible, usa el método nativo en lugar de reescribir uno tú mismo con Javascrip{filter}t. El método nativo está escrito en un lenguaje compilado como C/C++, por lo que es mucho más rápido que Javascrip{filter}t. Lo más olvidado de Javascrip{filter}t es la compleja matemática que se puede encontrar en los objetos Math; Estos métodos son mucho más rápidos que cualquier otro escrito con Javascrip{filter}t, como el seno y el coseno. Las sentencias switch son más rápidas - Si tienes una serie de sentencias if-else complejas, puedes obtener código más rápido convirtiéndolas en una sola sentencia switch. También puedes refinar aún más la declaración de cambio organizando la declaración de caso en orden de más probable a menos probable. Los operadores de bits son más rápidos - Al realizar operaciones matemáticas, las operaciones de bits son más rápidas que cualquier operación booleana o aritmética. Sustituir selectivamente operaciones aritméticas por operaciones de bits puede mejorar enormemente el rendimiento de cálculos complejos. Lógicas como la lógica de módulo, lógica y lógica de suma pueden considerarse reemplazadas por operaciones de bits.
|