Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Schnellladung

JavaScript-Schnellladung

高洛峰
高洛峰Original
2016-11-25 14:03:001207Durchsuche

Die Idee wurde von Netscape erfunden und stammt aus der funktionalen Sprache Schema und Self, die Python ein wenig ähnelt.

Eigenschaften: schwache Typisierung, dynamisches Parsen, Funktionen sind Objekte und Objekte basieren auf den ersten drei Merkmale von Prototype

Leicht verständlich, letzteres muss ausführlich erklärt werden.

Die grundlegendste Best Practice: Verwenden Sie Funktionen und Objekte in großen Programmen! Führen Sie keine Journalprogrammierung durch.

Der einfachste Weg, ein Objekt zu erstellen, ist:

var myObject = new Object();

Die Essenz von JavaScript-Objekte Oben ist ein assoziatives Array.

Tipps: Beachten Sie den Unterschied zwischen der Verwendung von functionName() und functionName, wenn Sie einer Variablen eine Funktion zuweisen, während ersteres das Ergebnis der Funktion an die Variable zahlt die Funktionsreferenz auf die Variable.

Sie können JSON verwenden, um JavaScript-Objekte zu erstellen und zu ändern, und JavaScript kann auch von JSON erstellte Objekte ändern.

Konstruktor-/Klassen-/Prototypattribut

JavaScript verfügt auch über die Konzepte von Objekten und Klassen, es gibt jedoch kein Konzept der integrierten Vererbung. Tatsächlich ist jedes JavaScript-Objekt eine Instanz derselben Basisklasse. Diese Basisklasse verfügt über die Fähigkeit, Mitgliedsfelder und -funktionen zur Laufzeit an sich selbst zu binden.

Sichere Alternative: Prototyp-Attribut

Prototyp ist eine Eigenschaft von JavaScript-Objekten, die in OO-Sprachen keine Entsprechung hat. Funktionen und Eigenschaften können einem Konstruktorprototyp zugeordnet werden. Dann arbeiten die Schlüsselwörter „prototyp“ und „new“ zusammen. Wenn eine Funktion mit „new“ aufgerufen wird, werden alle Eigenschaften und Methoden des Funktionsprototyps an das Ergebnisobjekt angehängt.

Java-Code

function MyObject(name, size){

this.name = name;

this.size = size; 🎜>}

MyObject.prototype.tellsize = function(){

alert("size of "+this.name+" is "+this.size);

}

var myObj = new MyObject("tiddles", "7,5 Meter");

myObj.tellSize();

function MyObject(name, size){

this.name = name;

this.size = size;

}

MyObject.prototype.tellsize = function(){

alert("size of "+this.name+" is "+this.size);

}

var myObj = new MyObject("tiddles", "7.5 meter");

myObj.tellSize();

Beachten Sie, dass wir den Prototyp erst referenzieren können, nachdem wir den Konstruktor deklariert haben. Das Objekt erbt Dinge, die an den Prototyp angehängt wurden, bevor der Konstruktor aufgerufen wurde. Der Prototyp kann zwischen Aufrufen des Konstruktors geändert werden und alles, nicht nur Funktionen, kann an den Prototyp angehängt werden.

Die Verwendung von Prototypen zur Definition klassenähnlichen Verhaltens für JavaScript-Objekte ist ein sicherer und zuverlässiger Weg.

Erweitern integrierter Klassen

In Webbrowsern können einige Kernklassen über den Prototypmechanismus erweitert werden.

Java-Code

Array.prototype.indexOf = function(obj) {

var result = -1;

for (var i=0; i< this.length; i++) {

if (this[i]==obj){

break; }

}

}

Array.prototype.indexOf = function(obj) {

var result = -1;

for (var i=0; i< this.length; i++) {

if (this[i]==obj){

result=i;

Pause;

}

}

}

Prototyp-Vererbung

JavaScript hat keine native Implementierung, aber es gibt einige nette Problemumgehungen.

Spiegelung von JavaScript-Objekten

Wird verwendet, um den Typ des Objekts zu ermitteln

Ereignisbehandlung und Funktionskontext

Wenn Sie die Ereignisbehandlungsfunktion des Dom-Elements programmgesteuert deklarieren, wird beim Klicken auf das Dom-Element das Ereignisobjekt als Parameter des Funktionsaufrufs und das Element selbst verwendet, auch wenn der Funktion keine Parameter zugewiesen sind als Kontextobjekt verwendet.

Wenn Sie möchten, dass der Ereignishandler auf das Modellobjekt verweist, an das er angehängt ist, gibt es zwei Möglichkeiten:

1. Referenzieren Sie das Modell mithilfe des Namens

2. Modell an Dom-Knoten anhängen

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn