1. Szanuj własność przedmiotu Nie dodawaj atrybutów do instancji ani prototypów; Nie dodawaj metod do instancji ani prototypów; Nie redefiniuj już istniejących metod. Najlepszym sposobem jest nigdy nie modyfikować obiektów, które nie należą do Ciebie. Posiadanie obiektu oznacza, że go stworzyłeś, na przykład niestandardowy typ lub dosłowny obiekt, który sam stworzyłeś. Tablice i dokumenty oczywiście nie należą do Ciebie, istnieją zanim Twój kod zostanie wykonany. 2. Unikaj zmiennych globalnych Stwórz co najwyżej zmienną globalną, pozwalając na istnienie innych obiektów i funkcji. Spójrz na następujące przykłady:
//两个全局量——避免!! var name = "Nicholas"; funkcja sayName(){ alert(nazwa);
} Kod ten zawiera dwie globalne wielkości: nazwę zmiennej oraz funkcję sayName(). W rzeczywistości możesz stworzyć obiekt zawierający oba te elementy, jak pokazano na następującym przykładzie:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. Unikaj porównywania z zerowym Jeśli wartość powinna być typem odniesienia, użyj operatora instancji do sprawdzenia jego konstruktora; Jeśli wartość powinna być typem bazowym, użyj typeof do sprawdzenia jego typu; Jeśli chcesz, aby obiekt zawierał konkretną nazwę metody, użyj operatora type, aby upewnić się, że metoda o podanej nazwie istnieje na obiekcie. (Tutaj polecam moją grupę do nauki i wymiany front-endu online: 675498134, niezależnie od tego, czy jesteś nowicjuszem czy bogiem, zapraszam do nauki, komunikacji i od czasu do czasu dzielenia się suchymi produktami, w tym najnowszymi materiałami frontendowymi i tutorialami, które sam zebrałem, by je udostępnić, a są eksperci techniczni, którzy codziennie na żywo wyjaśniają wiedzę frontendową. Początkujący i zaawansowani przyjaciele są mile widziani, aby uczyć się razem, komunikować się i robić postępy. ) 4. Używaj stałych Chociaż Javascrip{filter}t nie posiada formalnego pojęcia stałych, jest użyteczny. Pomysł oddzielenia danych od logiki aplikacji może zmieniać dane bez ryzyka wprowadzenia błędów. Spójrz na następujące przykłady: var Stałe = { INVALID_VALUE_MSG: "Wartość nieprawidłowa!", INVALID_VALUE_URL: "/errors/invalid.php" }; funkcja validate(value){ if (!value){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Unikaj globalnego wyszukiwania Prawdopodobnie najważniejszą kwestią do optymalizacji wydajności skryptów jest zwracanie uwagi na globalne wyszukiwania. Używanie zmiennych globalnych i funkcji jest zdecydowanie droższe niż lokalne, ponieważ wymaga wyszukiwań w łańcuchu zakresu. Spójrz na następującą funkcję: function updateUI(){ var imgs = document.getElementsByTagName("img"); dla (var i=0, len=imgs.length; I < len; i++){ imgs[i].title = document.title + " image " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Aktualizacja zakończona.";
} Funkcja może wyglądać idealnie, ale zawiera trzy odwołania do globalnego obiektu dokumentu. Jeśli na stronie znajduje się wiele obrazów, odwołanie do dokumentu w pętli for będzie wykonywane wielokrotnie, a nawet setki razy, za każdym razem wykonuje się wyszukiwanie łańcucha zakresu. Tworząc lokalną zmienną wskazującą na obiekt dokumentu, możesz poprawić wydajność tej funkcji, ograniczając globalne wyszukiwanie tylko raz: function updateUI(){ var doc = dokument; var imgs = doc.getElementsByTagName("img"); dla (var i=0, len=imgs.length; I < len; i++){ imgs[i].title = doc.title + " image " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Aktualizacja zakończona."; Tutaj najpierw umieść obiekt dokumentu w zmiennej local doc; Następnie zamień oryginalny dokument na resztę kodu. W porównaniu do oryginalnej wersji, obecna funkcja ma tylko jedno globalne wyszukiwanie, co jest zdecydowanie szybsze. 6. Inne środki ostrożności dotyczące wydajności Natywne metody są szybsze – Kiedy to możliwe, używaj natywnej metody zamiast samodzielnie przepisywać ją za pomocą Javascrip{filter}t. Natywna metoda jest napisana w języku skompilowanym, takim jak C/C++, więc jest znacznie szybsza niż Javascrip{filter}t. Najbardziej zapomnianą rzeczą w Javascrip{filter}t jest złożona matematyka, którą można znaleźć w obiektach matematycznych; Metody te są znacznie szybsze niż jakakolwiek inna metoda napisana za pomocą Javascrip{filter}t, takich jak sinus i cosinus. Instrukcje switch są szybsze – Jeśli masz serię złożonych instrukcji if-else, możesz uzyskać szybszy kod, konwertując je na pojedynczą instruację switch. Możesz także dodatkowo doprecyzować oświadczenie o zmianie, organizując oświadczenie sprawy w kolejności od najbardziej prawdopodobnego do najmniej prawdopodobnego. Operatory bitowe są szybsze – Podczas wykonywania operacji matematycznych operacje bitowe są szybsze niż jakiekolwiek operacje Boole'a czy arytmetyki. Selektywne zastąpienie operacji arytmetycznych operacjami bitowymi może znacznie poprawić wydajność złożonych obliczeń. Logika taka jak moduł, logika i logika sumy może być zastąpiona operacjami bitowymi.
|