1. Kunnioita esineen omistajuutta Älä lisää attribuutteja instansseihin tai prototyyppeihin; Älä lisää metodeja instansseihin tai prototyyppeihin; Älä määrittele uudelleen jo olemassa olevia menetelmiä. Paras tapa tehdä tämä on olla koskaan muokkaamatta esineitä, jotka eivät ole sinun omistamiasi. Esineen omistaminen tarkoittaa, että olet sen luonut, esimerkiksi oman tyypin tai itse luomasi esineen. Taulukot ja asiakirjat eivät tietenkään ole sinun, ne ovat olemassa ennen kuin koodisi suoritetaan. 2. Vältä globaaleja muuttujia Luo korkeintaan globaali muuttuja, jolloin muut objektit ja funktiot voivat esiintyä siinä. Katso seuraavat esimerkit:
//两个全局量——避免!! var name = "Nicholas"; function sayName(){ hälytys (nimi);
} Tämä koodi sisältää kaksi globaalia suuretta: muuttujan nimen ja funktion sayName(). Itse asiassa voit luoda objektin, joka sisältää molemmat, kuten seuraavassa esimerkissä näkyy:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. Vältä vertailua nulliin Jos arvon tulisi olla viitetyyppi, käytä instanssioperaattoria tarkistamaan sen konstruktori; Jos arvon tulisi olla perustyyppi, käytä type-tyyppiä sen tyypin tarkistamiseen; Jos haluat, että olio sisältää tietyn metodin nimen, käytä typeof-operaattoria varmistaaksesi, että määritetty nimi on olemassa oliossa. (Tässä suosittelen verkkofront-end-oppimis- ja vaihtoryhmääni: 675498134, olitpa aloittelija tai jumala, toivotan sinut tervetulleeksi oppimaan ja kommunikoimaan sekä jakamaan materiaaleja silloin tällöin, mukaan lukien uusimmat front-end-materiaalit ja tutoriaalit, jotka olen itse koonnut tarjotakseni sinulle, ja on teknisiä asiantuntijoita, jotka selittävät front-end-tietoa livenä joka päivä. Aloittelijat ja edistyneet ystävät ovat tervetulleita oppimaan, kommunikoimaan yhdessä ja etenemään yhdessä. ) 4. Käytä vakioita Vaikka Javascrip{filter}t:llä ei ole muodollista käsitystä vakioista, se on hyödyllinen. Tämä ajatus datan erottamisesta sovelluslogiikasta voi muuttaa dataa ilman virheiden riskiä. Katso seuraavat esimerkit: var Vakiot = { INVALID_VALUE_MSG: "Virheellinen arvo!", INVALID_VALUE_URL: "/errors/invalid.php" }; function validate(value){ if (!value){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Vältä globaalia hakua Todennäköisesti tärkein asia skriptien suorituskyvyn optimoimiseksi on kiinnittää huomiota globaaleihin hakuihin. Globaalien muuttujien ja funktioiden käyttö on ehdottomasti kalliimpaa kuin paikalliset, koska se vaatii hakuja scope-ketjussa. Katso seuraavaa toimintoa: function updateUI(){ var imgs = document.getElementsByTagName("img"); for (var i=0, len=imgs.length; I < Len; i++){ imgs[i].title = document.title + " image " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Päivitys valmis.";
} Funktio saattaa näyttää täysin kunnossa, mutta siinä on kolme viittausta globaaliin dokumenttiobjektiin. Jos sivulla on useita kuvia, for-silmukan dokumenttiviite suoritetaan useita kertoja tai jopa satoja kertoja, aina kun scope-ketjuhaku tehdään. Luomalla paikallinen muuttuja, joka osoittaa dokumenttiobjektiin, voit parantaa tämän funktion suorituskykyä rajoittamalla globaalin haun kerran: function updateUI(){ var doc = dokumentti; var imgs = doc.getElementsByTagName("img"); for (var i=0, len=imgs.length; I < Len; i++){ imgs[i].title = doc.title + " kuva " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Päivitys valmis."; Tässä sijoittaa ensin dokumenttiobjekti paikalliseen dokumenttimuuttujaan; Sitten korvaa alkuperäinen dokumentti muulla koodilla. Alkuperäiseen versioon verrattuna nykyisessä funktiossa on vain yksi globaali haku, joka on ehdottomasti nopeampi. 6. Muut suorituskyvyn varotoimet Natiivimetodit ovat nopeampia – Aina kun mahdollista, käytä natiivimetodia sen sijaan, että kirjoittaisit itse uuden Javascrip{filter}t:llä. Natiivimetodi on kirjoitettu käännetyllä kielellä, kuten C/C++, joten se on paljon nopeampi kuin Javascrip{filter}t. Eniten unohdettu asia Javascrip{filter}t:ssä on monimutkaiset matematiikkat, joita löytyy matemaattisista objekteista; Nämä menetelmät ovat paljon nopeampia kuin mikään muu Javascrip{filter}t:llä kirjoitettu menetelmä, kuten sini- ja kosinimenetelmät. Switch-lauseet ovat nopeampia – Jos sinulla on sarja monimutkaisia if-else-lauseita, saat nopeampaa koodia muuntamalla ne yhdeksi switch-lauseeksi. Voit myös tarkentaa switch-lausetta järjestämällä tapauslauseen todennäköisimmästä vähiten todennäköiseen. Bittioperaattorit ovat nopeampia – Matemaattisissa operaatioissa bittioperaatiot ovat nopeampia kuin mikään Boolen tai aritmeettinen operaatio. Aritmeettisten operaatioiden valikoiva korvaaminen bittioperaatioilla voi merkittävästi parantaa monimutkaisten laskelmien suorituskykyä. Logiikka, kuten moduli, logiikka ja summalogiikka, voidaan katsoa korvatuiksi bittioperaatioilla.
|