DasSchauen wir uns wie üblich zuerst den Code an: VerfahrenFunktionstest () { konsole.log(dies); } Im ObjektPerson={ Name: „Zhang San“, essen:Funktion(){ console.log(dies) } } In einer Methode bezieht sich dies auf das Objekt, zu dem die Methode gehört. Da es sich bei der ersten um eine Methode im Fenster handelt, wird das Fenster gedruckt, und die Eat-Methode ist eine Person-Methode, sodass das Objekt Person gedruckt wird. Man kann also erkennen, dass die alleinige Verwendung von „this“ in der Konsole das globale Objekt darstellt. Versteckt diesIn Objekten können Sie diese vorab einzeln deklarieren: var Person1 = { Name: „Zhang San“, Alter:18 } var Person2 = { Name:"Li Si", Alter:19 } Das wäre sehr mühsam zu schreiben, Sie können also wie folgt das Konzept der Java-Klassen lernen: var Person = Funktion (Name, Alter) { dieser.name=Name, this.age=Alter } var Person1=new Person("Person",18); var Person2=neue Person("Li Si",19); Tatsächlich ist in new ein return this versteckt. Wenn Sie new nicht verwenden, werden Sie feststellen, dass das neu erstellte Objekt nicht zurückgegeben wird. Jetzt vervollständigen wir es: var Person = Funktion (Name, Alter) { dieser.name=Name, this.age=Alter gib dies zurück; } var Person1=new Person("Person",18); var Person2=neue Person("Li Si",19); Auf diese Weise können Sie den Effekt sogar vortäuschen: var Person = Funktion (Name, Alter) { var das={}; dieser.name=Name, that.age=Alter gib das zurück; } var Person1=new Person("Person",18); var Person2=neue Person("Li Si",19); Strikter ModusDies hat ein magisches Verhalten im strikten und nicht strikten Modus Funktion test() { gib dies zurück; } # Wenn „use strict“ vor js hinzugefügt wird, bedeutet dies den strikten Modus „use strict“; Funktion test() { gib dies zurück; } Dies zeigt, dass in einer Funktion im nicht strikten Modus der Besitzer der Funktion standardmäßig daran gebunden ist. Daher kann der globale Wert gedruckt werden, aber im strengen Modus ist die Funktion nicht daran gebunden, sodass dies nicht definiert ist. Sie können dies ändern, um zu verweisen aufSchauen Sie sich zuerst den Code an var Person = Funktion (Name, Alter) { dieser.name=Name, this.age=Alter, dies.spaß = funktion(){ console.log("drucken",dieser.name); } } var Person1=new Person("Person",18); var Person2=neue Person("Li Si",19); Es ist ersichtlich, dass dies auf den Wert eines Fensters und nicht auf den Wert im Methodentest zeigt, aber einige Schlüsselwörter können den Zeiger ändern. Sie können sehen, wer das Objekt vor der Methode ist und wer das „this“ im Aufruf ist, aber es kann geändert werden, z. B. durch die Verwendung der Schlüsselwörter „call“, „apply“ und „bind“. Aus dem Obigen können wir erkennen, dass „call“ und „apply“ sehr ähnlich sind, aber „bind“ die Funktion nicht sofort ausführt und in () eingeschlossen werden muss. Wenn Sie jedoch Parameter eingeben, werden Sie feststellen, dass „call“ und „apply“ immer noch unterschiedlich sind, aber beide Objekte enthalten müssen. Schließlich verweist dies auf das Objekt.
Damit ist dieser Artikel mit der eingehenden Analyse der Richtung von this in JavaScript und der Änderung der Richtung abgeschlossen. Weitere relevante Inhalte zu JavaScript this direction finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Anwendung von CSS3-Animationseffekten in Aktivitätsseiten
Inhaltsverzeichnis 01 Szenarioanalyse 02 Funktion...
Inhaltsverzeichnis Eröffnungsszene Direktes Rende...
Inhaltsverzeichnis 1. Was ist dynamische Typisier...
Unterabfrage in der MySql-Datenbank: Unterabfrage...
Die Centos8-Distribution wird über die BaseOS- un...
Was ist Fuser Command? Der Befehl fuser ist ein s...
Inhaltsverzeichnis Vorwort Prototypische Vererbun...
Inhaltsverzeichnis 1. Synchrones AJAX 2. Asynchro...
Es gibt vier Arten der Positionierung in CSS, die...
Ich habe vor Kurzem ein Testserver-Betriebssystem...
【Frage】 Wir haben einen HP-Server. Wenn die SSD e...
Inhaltsverzeichnis Redo-Protokoll Warum müssen wi...
Für Linux-Systemadministratoren ist es von entsch...
1. Laden Sie das offizielle MySQL Yum Repository ...
Ursprung: Vor einigen Tagen hat ein Tester eine A...