1. Уважавайте собствеността върху обекта Не добавяйте атрибути към инстанции или прототипи; Не добавяйте методи към инстанции или прототипи; Не преосмисляй методи, които вече съществуват. Най-добрият начин да го направите е никога да не променяте предмети, които не са ваши собственици. Притежаването на обект означава, че сте го създали, например персонализиран тип или обектен литерал, който сте създали сами. Масивите и документите очевидно не са твои, те съществуват преди кодът ти да бъде изпълнен. 2. Избягвайте глобални променливи Създайте глобална променлива най-много, позволявайки на други обекти и функции да съществуват в нея. Вижте следните примери:
//两个全局量——避免!! var name = "Николас"; функция sayName(){ alert(име);
} Този код съдържа две глобални величини: името на променливата и функцията sayName(). Всъщност можете да създадете обект, който съдържа и двете, както е показано в следния пример:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. Избягвайте сравнението с null Ако стойността трябва да е референтен тип, използвайте instanceof оператора, за да проверите неговия конструктор; Ако стойността трябва да е базов тип, използвайте typeof, за да проверите нейния тип; Ако искате обектът да съдържа конкретно име на метод, използвайте оператора typeof, за да сте сигурни, че методът с зададеното име съществува върху обекта. (Тук препоръчвам моята група за уеб front-end learning and exchange group: 675498134, независимо дали сте начинаещ или бог, каня ви да дойдете, да учите и комуникирате и да споделяте сухи материали от време на време, включително най-новите фронт-енд материали и уроци, които сам съм подготвил, за да ви предоставя, а има и технически експерти, които обясняват фронтенд знанията на живо всеки ден. Начинаещи и напреднали приятели са добре дошли да учат и комуникират заедно и да напредват заедно. ) 4. Използвайте константи Въпреки че Javascrip{filter}t няма формална концепция за константи, той е полезен. Тази идея за отделяне на данните от логиката на приложението може да промени данните без риск от грешки. Вижте следните примери: var Константи = { INVALID_VALUE_MSG: "Невалидна стойност!", INVALID_VALUE_URL: "/errors/invalid.php" }; function validate(стойност){ ако (!стойност){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Избягвайте глобално търсене Вероятно най-важното за оптимизиране на производителността на скриптовете е да обръщате внимание на глобалните търсения. Използването на глобални променливи и функции определено е по-скъпо от локалното, защото изисква търсения по веригата на обхвата. Вижте следната функция: функция updateUI(){ var imgs = document.getElementsByTagName("img"); за (var i=0, len=imgs.length; Аз < Лен; i++){ imgs[i].title = document.title + " изображение " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Актуализацията е завършена.";
} Функцията може да изглежда напълно нормално, но съдържа три препратки към глобалния обект документ. Ако на страницата има няколко изображения, препратката към документа във for-цикъла ще се изпълнява многократно или дори стотици пъти, като всеки път ще се извършва търсене по верига на обхвата. Чрез създаване на локална променлива, сочеща към обекта документ, можете да подобрите производителността на тази функция, като ограничите глобалното търсене веднъж: функция updateUI(){ var doc = документ; var imgs = doc.getElementsByTagName("img"); за (var i=0, len=imgs.length; Аз < Лен; i++){ imgs[i].title = doc.title + "изображение" + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Актуализацията е завършена."; Тук първо поставете документния обект в локалната променлива doc; След това заменете оригиналния документ с останалата част от кода. В сравнение с оригиналната версия, настоящата функция има само една глобална проверка, която определено е по-бърза. 6. Други предпазни мерки за представяне Родните методи са по-бързи – Когато е възможно, използвайте нативния метод, вместо да го пренаписвате сами с Javascrip{filter}t. Родният метод е написан на компилиран език като C/C++, така че е много по-бърз от Javascrip{filter}t. Най-забравеното нещо в Javascrip{filter}t е сложната математика, която може да се намери в Math обектите; Тези методи са много по-бързи от всеки друг метод, написан с Javascrip{filter}t, като синус и косинус. Switch операторите са по-бързи - Ако имате серия от сложни if-else оператори, можете да получите по-бърз код, като ги конвертирате в една switch оператор. Можете също така допълнително да усъвършенствате изявлението за превключване, като го организирате по ред от най-вероятен към най-малко вероятен. Битовите оператори са по-бързи - При изпълнение на математически операции битовите операции са по-бързи от всякакви булеви или аритметични операции. Селективната замяна на аритметичните операции с битови операции може значително да подобри производителността на сложни изчисления. Логика като модул, логика и сумна логика може да се счита за заменена с битови операции.
|