Warum tut genderTeller (); Warnungen undefined ist mir nicht klar. Wenn ich es sehe, glaube ich, dass es nur eine Linie darüber ist. Kann jemand bitte die Details erklären
Wenn Sie eine Variable wie diese zuweisen ...
%Vor% ... Sie verlieren den -Kontext des person1
-Objekts, und die this
der Funktion zeigt auf das globale Objekt ( window
in einem Browser) anstelle des instanziierten person1
Objekt.
Sie erhalten undefined
, weil die gender
-Eigenschaft nicht auf window
existiert, und das Verweisen auf eine undefinierte Eigenschaft eines Objekts gibt undefined
in JavaScript zurück.
Das können Sie in modernen Browsern mit ... oder jQuery hat eine Methode namens bind()
... proxy()
.
So funktioniert der JavaScript-Bereich. Ich denke, das folgende Beispiel wird Ihnen einen guten Einblick geben.
%Vor% Es gibt eine einfache Möglichkeit herauszufinden, was der Wert von this
in einer Funktion ist, die Sie aufrufen. Es ist normalerweise der object
vor dem dot
, wo Sie die Funktion aufgerufen haben. Zum Beispiel:
person1.sayGender()
hier this
= person1
object1.object2.foo()
hier this
= object2
genderTeller()
here this
= window
, weil Sie es nicht von einem Objekt aus aufrufen.
Natürlich können Sie den Wert von this
mit .call
oder .apply
function setzen, aber normalerweise befolge ich diese Regel, wenn ich ein mentales Modell für meinen Code erstelle.
Tags und Links javascript