1. Respekter ejerskabet af objektet Tilføj ikke attributter til instanser eller prototyper; Tilføj ikke metoder til instanser eller prototyper; Omdefiner ikke metoder, der allerede eksisterer. Den bedste måde at gøre dette på er aldrig at ændre objekter, der ikke tilhører dig. At eje et objekt betyder, at du har skabt det, såsom en brugerdefineret type eller objekt-literal, som du selv har skabt. Arrays og dokumenter er tydeligvis ikke dine, de eksisterer, før din kode bliver udført. 2. Undgå globale variable Opret højst en global variabel, så andre objekter og funktioner kan eksistere i den. Tag et kig på følgende eksempler:
//两个全局量——避免!! var-navn = "Nicholas"; funktion sayName(){ alert(navn);
} Denne kode indeholder to globale størrelser: variabelnavnet og funktionen sayName(). Faktisk kan du oprette et objekt, der indeholder begge dele, som vist i følgende eksempel:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. Undgå at sammenligne med null Hvis værdien skal være en referencetype, brug operatoren instanceof til at tjekke dens konstruktør; Hvis værdien skal være en basistype, brug typeof til at tjekke dens type; Hvis du ønsker, at objektet skal indeholde et specifikt metodenavn, brug typeoperatoren for at sikre, at metoden med det angivne navn findes på objektet. (Her anbefaler jeg min web-front-end lærings- og udvekslingsgruppe: 675498134, uanset om du er nybegynder eller gud, byder jeg dig velkommen til at komme og lære og kommunikere og dele stofvarer fra tid til anden, inklusive de nyeste front-end materialer og tutorials, som jeg selv har samlet for at give dig, og der er tekniske eksperter, der forklarer front-end viden live hver dag. Begyndere og avancerede venner er velkomne til at lære og kommunikere sammen og gøre fremskridt sammen. ) 4. Brug konstanter Selvom Javascrip{filter}t ikke har noget formelt begreb om konstanter, er det nyttigt. Denne idé om at adskille data fra applikationslogik kan ændre data uden risiko for at introducere fejl. Tag et kig på følgende eksempler: var Constants = { INVALID_VALUE_MSG: "Ugyldig værdi!", INVALID_VALUE_URL: "/errors/invalid.php" }; funktion validate(value){ hvis (!value){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Undgå global søgning Det vigtigste for at optimere scriptpræstationen er nok at være opmærksom på globale opslag. At bruge globale variable og funktioner er bestemt dyrere end lokalt, fordi det involverer søgninger på scope-kæden. Tag et kig på følgende funktion: function updateUI(){ var imgs = document.getElementsByTagName("img"); for (var i=0, len=imgs.length; Jeg < len; i++){ imgs[i].title = dokument.title + " billede " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Opdatering fuldført.";
} Funktionen kan se helt fin ud, men den indeholder tre referencer til det globale dokumentobjekt. Hvis der er flere billeder på siden, vil dokumentreferencen i for-løkken blive udført flere gange eller endda hundredvis af gange, hver gang udføres et scope chain-opslag. Ved at oprette en lokal variabel, der peger på dokumentobjektet, kan du forbedre ydeevnen for denne funktion ved at begrænse et globalt opslag én gang: function updateUI(){ var doc = dokument; var imgs = doc.getElementsByTagName("img"); for (var i=0, len=imgs.length; Jeg < len; i++){ imgs[i].title = doc.title + " billede " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Opdatering fuldført."; Her placeres dokumentobjektet først i den lokale doc-variabel; Derefter erstatter du det oprindelige dokument med resten af koden. Sammenlignet med den oprindelige version har den nuværende funktion kun ét globalt opslag, hvilket bestemt er hurtigere. 6. Andre forholdsregler for udførelsen Native metoder er hurtigere - Brug den native metode i stedet for selv at omskrive en med Javascrip{filter}t når det er muligt. Den oprindelige metode er skrevet i et kompileret sprog som C/C++, så den er meget hurtigere end Javascrip{filter}t. Det mest glemte ved Javascrip{filter}t er den komplekse matematik, der kan findes i matematiske objekter; Disse metoder er meget hurtigere end nogen anden metode skrevet med Javascrip{filter}t, såsom sinus og cosinus. Switch-sætninger er hurtigere – Hvis du har en række komplekse if-else-sætninger, kan du få hurtigere kode ved at konvertere dem til en enkelt switch-sætning. Du kan også yderligere forfine skifteudsagnet ved at organisere sagsbeskrivelsen i rækkefølge fra mest sandsynlig til mindst sandsynlig. Bitoperatorer er hurtigere - Når man udfører matematiske operationer, er bitoperationer hurtigere end nogen booleske eller aritmetiske operationer. Selektiv udskiftning af aritmetiske operationer med bitoperationer kan i høj grad forbedre ydeevnen af komplekse beregninger. Logik som modulus, logik og sumlogik kan betragtes som erstattet af bitoperationer.
|