Heim  >  Artikel  >  Web-Frontend  >  Analyse des JavaScript-Konstruktors

Analyse des JavaScript-Konstruktors

高洛峰
高洛峰Original
2016-11-26 14:42:551133Durchsuche

Konstruktorprinzip
Die JavaScript-Sprache ist eine objektorientierte Sprache, aber in JavaScript gibt es kein Klassenkonzept. Daher verwendet JavaScript Konstruktoren, um die Auswirkungen von Klassen zu simulieren, das heißt, wir erstellen Objekte durch Funktionen. Dies beweist auch, dass Funktionen in JavaScript eine sehr wichtige Rolle spielen. Zum Beispiel:


var Book = function(name, price) {
this.name = name;
this.price = price;
}

var java = new Book('Master Java', 82);

Wenn das Schlüsselwort new zum Aufrufen des Konstruktors verwendet wird, ändert sich der Ausführungskontext vom globalen Variablenobjekt (Fenster) in einen leeren Kontext Stellt eine neu generierte Instanz dar. Daher zeigt das Schlüsselwort this auf die aktuell erstellte Instanz

Wenn in Ihrem Konstruktor nichts zurückgegeben wird, wird standardmäßig dieser ---- der aktuelle Kontext, also das Objekt, das Sie gerade erstellen, zurückgegeben. . Andernfalls wird jeder nicht-primitive Typwert zurückgegeben. Gewöhnliche Funktionen geben undefiniert zurück, wenn kein offensichtlicher Rückgabewert vorhanden ist.

Simulieren Sie den Konstruktor, um Objekte zu erstellen
Tatsächlich ist der Prozess der Objekterstellung mit new nicht mysteriös. Wir können Code verwenden, um zu simulieren, wie ein Objekt erstellt wird:


var Book = function (name) {
this.name = name;
};

//Normale Verwendung
var java = new Book('Master Java');

/ /Codesimulation zum Testen in Nicht-IE-Browsern verwenden. IE-Browser unterstützen nicht
var python = {};
python.__proto__ = Book;
Book.call(python, 'Master Python') ;
 
Rufen Sie den Konstruktor als gewöhnliche Funktion auf
Tatsächlich ist der Konstruktor eine gewöhnliche Funktion und kann natürlich als gewöhnliche Funktion aufgerufen werden, wie zum Beispiel var result = Book(); Das Ergebnis ist undefiniert. Der Unterschied liegt im Zeiger dieser Funktion. Ändern wir den obigen Konstruktor erneut:


var Book = function(name, price) {
this.name = name;
this.price = price;
if ( this == window) {
          return 'name = ' + name + ", price = "                   ", 100) Das Ergebnis ist "name = Java, price = 100" und das Ergebnis von var java = new Book( „Java“, 100) soll ein neues Objekt erstellen. Viele der mit JavaScript gelieferten Konstruktoren dienen sowohl als gewöhnliche Funktionen als auch als Konstruktoren. Wenn beispielsweise String und Number als Konstruktoren verwendet werden, gilt


var a = new Number(11);
var b = new Number(11.222);

var c = new String("hello");


Wenn String und Number als normale Funktionen verwendet werden, können sie zur Typkonvertierung verwendet werden, dh die Number-Funktion kann andere Typen in den Number-Typ konvertieren und Die String-Funktion kann andere Typen in Strings konvertieren,


var a = Number('11'); //11
var b = Number('hello'); //NaN

var c = String(11); //'11'

var d = String(null); //'null'

Zusammenfassung
Wenn eine Funktion als Konstruktor verwendet werden soll , die Funktion ist normalerweise Der erste Buchstabe des Namens wird groß geschrieben, um anzuzeigen, dass es sich um einen Konstruktor handelt. Gleichzeitig müssen Sie new verwenden, um den Konstruktor aufzurufen. Versuchen Sie außerdem, den Konstruktor nicht als gewöhnliche Funktion zu verwenden, da es einfach ist, globale Variablen zu generieren, und wenn der Rückgabewert nicht gut verarbeitet wird, kann dies leicht die Funktion des Konstruktors selbst beeinträchtigen.



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