Was bedeutet das in js?
Dies wird in JS immer verwendet. Heute werde ich mit Ihnen darüber sprechen, was die Leute leicht verwirren kann und wie man es verwendet Dies zeigt auf 1, und die gewöhnliche
Funktionzeigt auf den Aufrufer der Funktion: Eine einfache Möglichkeit besteht darin, zu sehen, ob sich vor der Funktion ein Punkt befindet. Wenn ja, dann zeigen Sie auf den Wert in 2. Die Pfeilfunktion zeigt auf den Bereich, in dem die Funktion verwendet wird: Achten Sie darauf, den Gültigkeitsbereich zu verstehen. Nur das {} und if(){} von Objekt stellt keinen Gültigkeitsbereich dar;
const obj = { name: 'objName', say() { console.log(this.name); }, read: () => { console.log(this.name); } } obj.say(); // objName obj.read(); // undefined
Gewöhnliche Funktion, der Aufrufer ist obj, daher ist das Ergebnis auch objname eine gewöhnliche Funktion, mit einem Punkt davor, also zeigt dies auf obj; dies zeigt auf den Bereich, in dem sich die Funktion befindet. Der aktuelle Bereich ist die globale Umgebung, also ist this.name undefiniert .
obj.say(); // obj, das bezieht sich auf Es ist obj, das ihn definiert
const obj = { say: function () { setTimeout(() => { console.log(this) }); } }
Zusätzliche Wissenspunkte
Die Standardeinstellung des Browsers ist window
test(); //window
function test() { console.log(this); }
node.js
Der Standardwert für this in der globalen Umgebung ist {}, und der Standardwert für this in gewöhnlichen Funktionen ist global
console.log(this); // {} function test() { console.log(this); } test(); //global
Beispiel1
Ausgabe 10, 2
Ich war verwirrt, als ich diese Frage zum ersten Mal sah, aber jetzt verstehe ich sie endlich. Die Methodenfunktion übergibt zwei Parameter, ein Parameter ist fn(), fn() ist eine gewöhnliche Funktion und zeigt auf die Funktion. Der Aufrufer zeigt zu diesem Zeitpunkt auf die globale Welt (Sie können auch sehen, dass kein Punkt vorhanden ist vor dieser Funktion), daher ist das laufende Ergebnis 10. Argumente sind alle Parameter der Funktion, die ein Objekt der Klasse
arrayconst length = 10; function fn() { console.log(this.length); } const obj = { length: 5, method: function(fn) { fn(); arguments[0](); } }; obj.method(fn, 1);
Hinweis: Das laufende Ergebnis des obigen Beispiels in der Knotenumgebung ist undefiniert 2, const length = 10 wird in global.length = 10 geändert, da die globale Variable
in der Knotenumgebung definiert ist wird nicht gebunden auf global, und der Browser bindet sich automatisch an das globale Umgebungsfenster
Dies ist etwas kompliziert, aber wenn man es Schritt für Schritt analysiert, ist es leicht zu verstehen:
const length = 10; function fn() { console.log(this.length); } const obj = { length: 5, method: function(fn) { fn(); const fun = arguments[0]; fun(); } }; obj.method(fn, 1); 10, 10 example 2 window.val = 1; var obj = { val: 2, dbl: function() { this.val *= 2 val *= 2; console.log(val); console.log(this.val); } } obj.dbl(); // 2 4 var func = obj.dbl; func(); // 8 8
obj.dbl(); Bei der Ausführung dieser Codezeile bezieht sich dies auf obj, also this.val == = obj.val*=2, das Endergebnis ist 4, val*=2 === window.val *= 2, das Endergebnis ist 2
Das Obige ist mein kleines Verständnis davon. Wenn Sie Fragen zu diesem Artikel von mir haben, können Sie gerne mit mir kommunizieren.
Verwandte Empfehlungen:
Wie man die objektorientierten Grundlagen von JavaScript und diese Zeigeprobleme versteht
Detaillierte Erklärung des Unterschieds zwischen diesem und Veranstaltung in JS
Einführung dazu, bewerben, aufrufen und binden in JS
Das obige ist der detaillierte Inhalt vonWie man dies in js verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!