Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie definiere ich eine Klasse in Javascript objektorientiert?

伊谢尔伦
Freigeben: 2017-07-27 13:37:53
Original
1061 Leute haben es durchsucht

Bei der umfassenden Verwendung von Javascript treten Probleme auf. Das erste ist, dass js keinen Klassenmechanismus bereitstellt, was bedeutet, dass dies der Fall ist Alle Funktionen sind ein Instanziierungsobjekt der Funktionsklasse. Wenn wir uns jedoch auf diese einzigartige Klasse verlassen, können wir die Definition einer neuen Klasse simulieren. Das erste, was mir in den Sinn kommt, ist, die Funktion direkt zu verwenden, um eine vollständig definierte Klasse zu generieren:

function myClass(arg,...) 
{ 
this.attributeName; 
this.functionName = function(){}; 
}
Nach dem Login kopieren
Dabei gibt es jedoch ein Problem Es wird eine neue myClass-Instanz erstellt. Zu diesem Zeitpunkt öffnen die internen Funktionen den Speicherplatz erneut und geben Verweise auf Funktionsnamen zurück. Dies steht jedoch im Widerspruch zu der von uns vorgestellten Klasse und verschwendet Platz. Theoretisch sollten die Funktionen der Klasse geteilt werden.


Ein vernünftigerer Ansatz besteht darin, die Funktion außerhalb der Klasse zu definieren und dann den Funktionszeiger functionName innerhalb der Klasse zuzuweisen. Der andere Ansatz besteht darin, myClass.prototype.functionName = function(){} außerhalb der Klasse zu verwenden. Beides sind gute Entscheidungen, wobei die zweite der Klassendefinition näher kommt.
Als nächstes var newObj = new myClass(); und schon sind Sie fertig.

Über namenlose js-Funktionen
Eine der Funktionen namenloser Funktionen kann darin bestehen, einen Verweis auf ein neues Funktionsobjekt zu generieren, hauptsächlich zur Definition.

Eine andere Verwendung besteht für einige Rückruffunktionen in js, die keine Parameter enthalten können.

Das offensichtliche Beispiel ist setInterval. Ich denke, dass dies eine Funktion ist, die vielen Menschen Kopfschmerzen bereitet, insbesondere wenn Sie der Callback-Funktion Parameter hinzufügen möchten.

Und das Schlimmste ist, dass DHTML kein von w3c spezifizierter Standard ist, sodass die von verschiedenen Browsern bereitgestellte setInterval-Parametertabelle unterschiedlich ist. . .

Soweit die beiden getesteten Browser (IE-Kern, Webkit-Kern)

IE: setInvterval(function, msecond [,lang]);

chrome:setInterval (function , msecond [, pram1, pram2, ....]);

Mit anderen Worten, Chrome ermöglicht das Hinzufügen von Parametern zur Funktion, und die Parameterliste befindet sich am Ende. Der letzte Parameter von IE besteht jedoch darin, die Art der verwendeten Skriptsprache anzugeben, da IE neben js auch andere Skriptsprachen wie vbs unterstützt.


Um das Kompatibilitätsproblem zu lösen, müssen wir unbenannte Funktionen verwenden. . .

function test(yourArg) 
{ 
var arg = yourArg; 
setInterval(function(){callback(arg)}, time); 
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie definiere ich eine Klasse in Javascript objektorientiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!