Heim  >  Artikel  >  Web-Frontend  >  Wie man dies in js verwendet

Wie man dies in js verwendet

php中世界最好的语言
php中世界最好的语言Original
2017-11-17 18:01:212557Durchsuche

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

Funktion

zeigt 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 .

Nehmen Sie das folgende Beispiel, um besser zu verstehen, wohin die Pfeilfunktion zeigt. Der Gültigkeitsbereich ist die gewöhnliche Funktion say, und der Aufrufer von say() ist obj

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

Beantworten Sie zwei Fragen um zu überprüfen, ob Sie es beherrschen
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

array
const length = 10;
function fn() {
console.log(this.length);
}
const  obj = {
  length: 5,
  method: function(fn) { 
  fn();
  arguments[0]();   
  }
};
obj.method(fn, 1);
ist, arguments[0] () , kann als Argumente betrachtet werden.0( ), was diese Funktion aufruft, sind Argumente, zu diesem Zeitpunkt bezieht sich dies auf Argumente, this.length ist angument.length, was die Gesamtzahl der in 2 übergebenen Parameter ist

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

Was wird das Ergebnis sein, wenn es wie folgt geändert wird?

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

func(), wenn diese Codezeile ausgeführt wird, func () Ohne Präfix bezieht sich dies auf window.func(); zu diesem Zeitpunkt ist der Wert von this window, this.val === window.val *= 2, zu diesem Zeitpunkt ist window.val 4, val* =2 === window.val *2, das Endergebnis ist 8. Schließlich beziehen sich console.log(this.val) und console.log(val) auf window.val.

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!

Stellungnahme:
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