1. Respektieren Sie das Eigentum am Objekt Fügen Sie keine Attribute zu Instanzen oder Prototypen hinzu; Keine Methoden zu Instanzen oder Prototypen hinzufügen; Definieren Sie keine bereits existierenden Methoden neu. Der beste Weg ist, niemals Objekte zu verändern, die nicht dir gehören. Ein Objekt zu besitzen bedeutet, dass du es erstellt hast, zum Beispiel einen benutzerdefinierten Typ oder Objekt-Literal, den du selbst erstellt hast. Arrays und Dokumente gehören offensichtlich nicht dir, sie existieren, bevor dein Code ausgeführt wird. 2. Globale Variablen vermeiden Erstelle höchstens eine globale Variable, sodass andere Objekte und Funktionen darin existieren können. Schauen Sie sich die folgenden Beispiele an:
//两个全局量——避免!! varname = "Nicholas"; function sayName(){ alert(name);
} Dieser Code enthält zwei globale Größen: den Variablennamen und die Funktion sayName(). Tatsächlich können Sie ein Objekt erstellen, das beide enthält, wie im folgenden Beispiel gezeigt:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alert(this.name);
} }; 3. Vermeide den Vergleich mit Null Wenn der Wert ein Referenztyp sein sollte, verwenden Sie den Instanz-Operator, um dessen Konstruktor zu überprüfen; Wenn der Wert ein Basistyp sein sollte, verwenden Sie typeof, um seinen Typ zu überprüfen; Wenn Sie möchten, dass das Objekt einen bestimmten Methodennamen enthält, verwenden Sie den Operatortyp, um sicherzustellen, dass die Methode mit dem angegebenen Namen auf dem Objekt existiert. (Hier empfehle ich meine Web-Frontend-Lern- und Austauschgruppe: 675498134, egal ob du Anfänger oder Gott bist, lade ich dich ein, zu kommen, zu lernen, zu kommunizieren und von Zeit zu Zeit Textilwaren zu teilen, einschließlich der neuesten Frontend-Materialien und Tutorials, die ich selbst zusammengestellt habe, um dir zu geben, und es gibt technische Experten, die täglich Live-Frontend-Wissen erklären. Anfänger und fortgeschrittene Freunde sind herzlich eingeladen, gemeinsam zu lernen, zu kommunizieren und gemeinsam Fortschritte zu machen. ) 4. Verwendung von Konstanten Obwohl Javascrip{filter}t kein formales Konzept von Konstanten hat, ist es nützlich. Diese Idee, Daten von der Anwendungslogik zu trennen, kann Daten verändern, ohne das Risiko einzugehen, Fehler einzuführen. Schauen Sie sich die folgenden Beispiele an: var Constants = { INVALID_VALUE_MSG: "Ungültiger Wert!", INVALID_VALUE_URL: "/errors/invalid.php" }; function validate(value){ wenn (!value){ alert(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Globale Suche vermeiden Wahrscheinlich ist das Wichtigste, um die Skriptleistung zu optimieren, die globale Lookups zu beachten. Die Verwendung globaler Variablen und Funktionen ist definitiv teurer als lokal, da es Suchanfragen in der Scope-Kette beinhaltet. Schauen Sie sich folgende Funktion an: function updateUI(){ var imgs = document.getElementsByTagName("img"); für (var i=0, len=imgs.length; Ich < Len; i++){ imgs[i].title = document.title + " image " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Update abgeschlossen.";
} Die Funktion sieht zwar völlig in Ordnung aus, enthält aber drei Referenzen auf das globale Dokumentobjekt. Wenn mehrere Bilder auf der Seite sind, wird die Dokumentreferenz in der for-Schleife mehrfach oder sogar hunderte Male ausgeführt, wobei jedes Mal eine Scope-Chain-Abfrage durchgeführt wird. Indem Sie eine lokale Variable erstellen, die auf das Dokumentobjekt zeigt, können Sie die Leistung dieser Funktion verbessern, indem Sie eine globale Abfrage einmal: function updateUI(){ var doc = Dokument; var imgs = doc.getElementsByTagName("img"); für (var i=0, len=imgs.length; Ich < Len; i++){ imgs[i].title = doc.title + " Bild " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Update abgeschlossen."; Hier wird zunächst das Dokumentobjekt in die lokale Doc-Variable gesetzt; Ersetze dann das Originaldokument durch den Rest des Codes. Im Vergleich zur Originalversion hat die aktuelle Funktion nur eine globale Abfrage, was definitiv schneller ist. 6. Weitere Vorsichtsmaßnahmen für die Leistung Native Methoden sind schneller – Wann immer möglich, benutze die native Methode, anstatt selbst eine mit Javascrip{filter}t neu zu schreiben. Die native Methode ist in einer kompilierten Sprache wie C/C++ geschrieben, daher viel schneller als Javascrip{filter}t. Das am meisten vergessene an Javascrip{filter}t ist die komplexe Mathematik, die in Math-Objekten zu finden ist; Diese Methoden sind deutlich schneller als alle anderen mit Javascrip{filter}t geschriebenen Methoden, wie Sinus und Cosinus. Switch-Anweisungen sind schneller – Wenn Sie eine Reihe komplexer if-else-Anweisungen haben, können Sie schnelleren Code erhalten, indem Sie sie in eine einzige Switch-Anweisung umwandeln. Du kannst die Wechselaussage auch weiter verfeinern, indem du die Fallaussage von wahrscheinlich bis am wenigsten wahrscheinlich ordnest. Bitoperatoren sind schneller – Bei mathematischen Operationen sind Bitoperationen schneller als bei Boolesche oder arithmetischen Operationen. Das selektive Ersetzen arithmetischer Operationen durch Bitoperationen kann die Leistung komplexer Berechnungen erheblich verbessern. Logik wie Modul, Logik und Summenlogik kann als durch Bitoperationen ersetzt betrachtet werden.
|