1. Respecteer het eigendom van het object Voeg geen attributen toe aan instanties of prototypes; Voeg geen methoden toe aan instanties of prototypes; Herdefinieer methoden die al bestaan. De beste manier om dit te doen is om nooit objecten te wijzigen die niet van jou zijn. Een object bezitten betekent dat je het hebt gemaakt, zoals een custom type of object literal dat je zelf hebt gemaakt. Arrays en documenten zijn duidelijk niet van jou, ze bestaan al voordat je code wordt uitgevoerd. 2. Vermijd globale variabelen Maak hooguit een globale variabele, zodat andere objecten en functies erin kunnen bestaan. Bekijk de volgende voorbeelden:
//两个全局量——避免!! var-naam = "Nicholas"; functie sayName(){ alert(naam);
} Deze code bevat twee globale grootheden: de variabelnaam en de functie sayName(). Je kunt zelfs een object maken dat beide bevat, zoals getoond in het volgende voorbeeld:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. Vermijd het vergelijken met null Als de waarde een referentietype moet zijn, gebruik dan de operatorinstansie om de constructor te controleren; Als de waarde een basistype moet zijn, gebruik typeof om het type te controleren; Als je wilt dat het object een specifieke methodenaam bevat, gebruik dan de typeof-operator om ervoor te zorgen dat de methode met de opgegeven naam op het object aanwezig is. (Hier beveel ik mijn web front-end leer- en uitwisselingsgroep aan: 675498134, of je nu een beginner of een god bent, ik nodig je uit om te komen leren en communiceren, en af en toe droge producten te delen, inclusief de nieuwste front-end materialen en tutorials die ik zelf heb samengesteld om aan je te geven, en er zijn technische experts die elke dag live front-end kennis uitleggen. Beginners en gevorderde vrienden zijn welkom om samen te leren en te communiceren en samen vooruitgang te boeken. ) 4. Gebruik constanten Hoewel Javascrip{filter}t geen formeel concept van constanten heeft, is het nuttig. Dit idee om data te scheiden van applicatielogica kan data veranderen zonder het risico te lopen fouten te veroorzaken. Bekijk de volgende voorbeelden: var Constants = { INVALID_VALUE_MSG: "Ongeldige waarde!", INVALID_VALUE_URL: "/errors/invalid.php" }; functie validate(value){ als (!waarde){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Vermijd globale zoekopdrachten Waarschijnlijk is het belangrijkste om de scriptprestaties te optimaliseren het letten op globale opzoekingen. Het gebruik van globale variabelen en functies is zeker duurder dan lokaal omdat het zoekopdrachten op de scope chain vereist. Bekijk de volgende functie: function updateUI(){ var imgs = document.getElementsByTagName("img"); voor (var i=0, len=imgs.length; Ik < len; i++){ imgs[i].title = document.title + " afbeelding " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Update voltooid.";
} De functie ziet er misschien prima uit, maar bevat drie referenties naar het globale documentobject. Als er meerdere afbeeldingen op de pagina staan, wordt de documentreferentie in de for-lus meerdere of zelfs honderden keren uitgevoerd, telkens wordt een scope chain-opzoeking uitgevoerd. Door een lokale variabele te creëren die naar het documentobject verwijst, kun je de prestaties van deze functie verbeteren door een globale lookup te beperken één keer: function updateUI(){ var doc = document; var imgs = doc.getElementsByTagName("img"); voor (var i=0, len=imgs.length; Ik < len; i++){ imgs[i].title = doc.title + " afbeelding " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Update voltooid."; Hier plaats je eerst het documentobject in de lokale doc-variabele; Vervang vervolgens het originele document door de rest van de code. Vergeleken met de originele versie heeft de huidige functie slechts één globale opzoek, wat zeker sneller is. 6. Andere voorzorgsmaatregelen voor prestaties Native methoden zijn sneller - Gebruik waar mogelijk de native methode in plaats van er zelf een te herschrijven met Javascrip{filter}t. De native methode is geschreven in een gecompileerde taal zoals C/C++, dus is veel sneller dan Javascrip{filter}t. Het meest vergeten aan Javascrip{filter}t is de complexe wiskunde die in Math-objecten te vinden is; Deze methoden zijn veel sneller dan andere methoden die met Javascrip{filter}t zijn geschreven, zoals sinus en cosinus. Switch-statements zijn sneller - Als je een reeks complexe if-else-statements hebt, kun je snellere code krijgen door ze om te zetten in één switch-statement. Je kunt de switch statement ook verder verfijnen door de case statement te ordenen van meest waarschijnlijk naar minst waarschijnlijk. Bitoperatoren zijn sneller - Bij het uitvoeren van wiskundige bewerkingen zijn bitoperaties sneller dan welke Booleaanse of rekenkundige bewerking dan ook. Het selectief vervangen van rekenkundige bewerkingen door bitoperaties kan de prestaties van complexe berekeningen aanzienlijk verbeteren. Logica zoals modulus, logica en somlogica kan worden beschouwd als vervangen door bitoperaties.
|