2016-10-12 4 views
-2

Ich stieß auf Verständnis, wie 'dies' in Javascript mit Detail funktioniert.'this' auf die Objekt Konstruktor Funktion

in w3school es erklärt, wie das funktioniert. (http://www.w3schools.com/js/js_object_definition.asp)

„Der Wert dieser, wenn sie in einer Funktion verwendet wird, ist die Aufgabe, die‚Eigentümer‘der Funktion.

Der Wert dieser, wenn sie in einem Objekt verwendet wird, ist das Objekt selbst.“

Aus meiner Sicht sind Objektkonstruktoren Funktionen, keine Objekte, und entsprechend der obigen Definition sollte "this" im Konstruktor auf das Objekt verweisen, das diesen Konstruktor besitzt (im globalen Maßstab wäre das das Fensterobjekt)).

Das 'dies' bezieht sich jedoch auf die Objektkonstruktorfunktion. Warum das?

function person(first, last, age) { 
    this.firstName = first; 
    this.lastName = last; 
    this.age = age;} 

Ich habe versucht, durch weitere Beispiele auf Stack-Überlauf suchen, aber sie scheinen nicht, dieses Konzept im Detail zu räumen.

+5

Verlassen Sie sich nicht auf W3schools. In diesem Fall sind beide Aussagen entweder falsch oder irreführend, insbesondere die zweite. Insbesondere gibt es kein Konzept des "Besitzes" in JS. Es versteht sich, dass "this" im Konstruktor auf das zu konstruierende Objekt verweist. –

+0

Ich denke nicht, dass das stimmt. Maxim Egorushkin scheint die Antwort direkt auf die Antwort unter – peakersky

+0

@Cerbrus genagelt zu haben. Es ist keine doppelte IMO, die Frage, auf die Sie sich beziehen, ist viel allgemeiner, wohingegen diese eine sehr spezifische ist. –

Antwort

0

In der Konstruktorfunktion, die mit new aufgerufen wird, bezieht sich this auf das zu konstruierende Objekt.

+0

Danke! Das "This" wird eher verwendet, wenn der Objektkonstruktor aufgerufen wird! Das macht so viel Sinn. – peakersky

+0

@peakersky Wichtiges Bit _wenn der Objektkonstruktor mit ** new ** _ aufgerufen wird. –

+0

Danke für das Schärfen! :) – peakersky

Verwandte Themen