Heim > Web-Frontend > js-Tutorial > Der Unterschied zwischen der Verwendung neuer und der Nichtverwendung instanziierter Objekte in javascript_javascript-Fähigkeiten

Der Unterschied zwischen der Verwendung neuer und der Nichtverwendung instanziierter Objekte in javascript_javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:53:43
Original
2199 Leute haben es durchsucht

Schauen wir uns zunächst ein Beispiel an

function Me(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
}

Nach dem Login kopieren

Was ist der Unterschied zwischen den folgenden beiden Methoden zum Instanziieren von Objekten?

var mefun1 = new Me('fei','20','it');
var mefun2 = Me('fei','20','it');

Nach dem Login kopieren

Einfach gesagt

Die erste ist die Konstruktorfunktion, dh der Aufruf der Konstruktorfunktion über den neuen Operator, um eine Funktion zu erstellen
Die zweite Methode ist keine Instanziierung, sondern ruft lediglich die Funktion auf und weist der Variablen den Rückgabewert zu.

Erweitern Sie es erneut

In JavaScript gibt es keine echten Klassen, aber Konstruktoren und neue Operatoren in JavaScript. Der Konstruktor wird verwendet, um die Eigenschaften und Werte des Instanzobjekts zu initialisieren. Als Konstruktor kann jede JavaScript-Funktion verwendet werden, und dem Konstruktor muss der neue Operator vorangestellt werden, um eine neue Instanz zu erstellen.

Der

new-Operator ändert den Ausführungskontext der Funktion und auch das Verhalten der Return-Anweisung. Tatsächlich ist die Verwendung von neuen und Konstruktoren sehr ähnlich zu traditionellen Sprachen, die Klassen implementieren:

// 实例化一个Me
var alice = new Me('alice', 18, 'Coder');
// 检查这个实例
assert( alice instanceof Me );

Nach dem Login kopieren

Bei der Benennung von Konstruktoren wird normalerweise die Groß-/Kleinschreibung verwendet, wobei der erste Buchstabe groß geschrieben wird, um ihn von gewöhnlichen Funktionen zu unterscheiden. Dies ist
Eine idiomatische Verwendung.

// 不要这么做!
Me('alice', 18, 'Coder'); //=> undefined

Nach dem Login kopieren

Diese Funktion gibt nur undefiniert zurück, und der Ausführungskontext ist das Fensterobjekt (global), und drei globale Variablen namens, Alter und Job werden versehentlich erstellt. Verlieren Sie beim Aufruf des Konstruktors nicht das Schlüsselwort new.

Wenn der Konstruktor mit dem Schlüsselwort new aufgerufen wird, ändert sich der Ausführungskontext vom globalen Objekt (Fenster) in einen leeren Kontext, der die neu generierte Instanz darstellt. Daher verweist das Schlüsselwort this auf die aktuell erstellte Instanz. Auch wenn das Verständnis etwas verwirrend ist, gilt das Gleiche auch für die Implementierung integrierter Klassenmechanismen in anderen Sprachen.

Wenn Ihr Konstruktor standardmäßig nichts zurückgibt, gibt er dies zurück – den aktuellen Kontext.

Andernfalls wird ein beliebiger nicht-primitiver Typwert zurückgegeben.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

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