Heim > Artikel > Web-Frontend > Welche Möglichkeiten gibt es, dies in Javascript zu verwenden?
So verwenden Sie dies in JavaScript: 1. Wenn die Funktion ein Objekt hat, zu dem sie gehört, zeigen Sie auf das Objekt, zu dem sie gehört. 2. Wenn die Funktion kein Objekt hat, zu dem sie gehört, zeigt sie auf das globales Objekt; 3. Dies im Konstruktor zeigt auf das neue Objekt.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, DELL G3-Computer.
So verwenden Sie dies in JavaScript:
1) Wenn die Funktion ein Objekt hat, zu dem sie gehört: Zeigen Sie auf das Objekt, zu dem sie gehört.
Wenn die Funktion ein Objekt hat, zu dem sie gehört, wird sie normalerweise aufgerufen durch . Ausdruck, und dieser weist natürlich auf das Objekt hin, zu dem er gehört. Zum Beispiel das folgende Beispiel:
var myObject = {value: 100}; myObject.getValue = function () { console.log(this.value); // 输出 100 // 输出 { value: 100, getValue: [Function] }, // 其实就是 myObject 对象本身 console.log(this); return this.value; }; console.log(myObject.getValue()); // => 100
getValue() gehört zum Objekt myObject und wird von myOjbect aufgerufen, sodass dies auf das Objekt myObject verweist.
2) Die Funktion hat kein besitzendes Objekt: zeigt auf das globale Objekt
var myObject = {value: 100}; myObject.getValue = function () { var foo = function () { console.log(this.value) // => undefined console.log(this);// 输出全局对象 global }; foo(); return this.value; }; console.log(myObject.getValue()); // => 100
Obwohl im obigen Codeblock die foo-Funktion im Funktionskörper von getValue definiert ist, gehört sie tatsächlich weder zu getValue noch zu myObject. foo ist an kein Objekt gebunden, daher zeigt sein Zeiger this beim Aufruf auf das globale Objekt.
Es wird gesagt, dass es sich hierbei um einen Konstruktionsfehler handelt.
3) Dies im Konstruktor: zeigt auf das neue Objekt
In js rufen wir den Konstruktor über das Schlüsselwort new auf, und dieser wird an das neue Objekt gebunden.
var SomeClass = function(){ this.value = 100; } var myCreate = new SomeClass(); console.log(myCreate.value); // 输出100
Übrigens gibt es in js keine klaren Grenzen zwischen Konstruktoren, gewöhnlichen Funktionen, Objektmethoden und Abschlüssen. Die Grenzen liegen alle im menschlichen Herzen.
4) Apply- und Call-Aufrufe und Bindungsbindung: Zeigt auf das gebundene Objekt. Die
apply()-Methode akzeptiert zwei Parameter. Der erste ist der Bereich, in dem die Funktion ausgeführt wird, und der andere ist ein Parameterarray (Argumente). .
Die Bedeutung des ersten Parameters der call()-Methode ist dieselbe wie die der apply()-Methode, außer dass die anderen Parameter einzeln aufgelistet werden müssen.
Einfach ausgedrückt ähnelt die Methode „call“ eher der Art und Weise, wie wir normalerweise Funktionen aufrufen, während „Apply“ erfordert, dass wir ihr ein Array in der Form „Array“ übergeben. Sie sind austauschbar.
var myObject = {value: 100}; var foo = function(){ console.log(this); }; foo(); // 全局变量 global foo.apply(myObject); // { value: 100 } foo.call(myObject); // { value: 100 } var newFoo = foo.bind(myObject); newFoo(); // { value: 100 }
Verwandte kostenlose Lernempfehlungen: Javascript-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, dies in Javascript zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!