Heim > Web-Frontend > js-Tutorial > Beispiele zur Erklärung, wie dieser Zeigefehler in JavaScript behoben werden kann (Bild- und Text-Tutorial)

Beispiele zur Erklärung, wie dieser Zeigefehler in JavaScript behoben werden kann (Bild- und Text-Tutorial)

亚连
Freigeben: 2018-05-21 09:48:23
Original
1857 Leute haben es durchsucht

Die Handhabung dieses Zeigers in JavaScript ist für jeden ein häufiges Problem. Hier geben wir ein Beispiel, um die Lösung für diesen Zeigerfehler in JavaScript zu erklären. Weitere Informationen finden Sie unter

Objektdefinition:

'use strict'
var jane = {
  name : ‘Jane',
  display : function(){
    retrun 'Person named ' + this.name;
  }
};
Nach dem Login kopieren

Auf diese Weise wird

jane.display();
Nach dem Login kopieren

Der folgende Aufruf erfolgt falsch:

var func = jane.display;
func()
Nach dem Login kopieren

TypeError: Cannot read property 'name' of undefined
Nach dem Login kopieren
Nach dem Login kopieren

Da sich dieser Zeiger geändert hat, lautet der richtige Weg wie folgt:

var func2 = jane.display.bind(jane);
func2()
Nach dem Login kopieren

'Penson named Jane'
Nach dem Login kopieren

Alle Funktionen haben ihre spezielle Variable this, wie zum Beispiel die folgende forEach

var jane = {
  name : 'Jane',
  friends: ['Tarzan', 'Cheeta'],
  sayHiToFriends: function(){
    'use strict';
    this.friends.forEach(function(friend) {
      // 'this' is undefined here
      console.log(this.name + ' says hi to '+ friend);
    });
  }
}
Nach dem Login kopieren

Der Aufruf von sayHiToFriends erzeugt einen Fehler:

jane.sayHiToFriends()
Nach dem Login kopieren

TypeError: Cannot read property 'name' of undefined
Nach dem Login kopieren
Nach dem Login kopieren

Lösung Eins: Speichern Sie dies in verschiedenen Variablen

var jane = {
  name : 'Jane',
  friends: ['Tarzan', 'Cheeta'],
  sayHiToFriends: function(){
    'use strict';
    var that = this;
    this.friends.forEach(function(friend) {
      console.log(that.name + ' says hi to '+ friend);
    });
  }
}
Nach dem Login kopieren

Lösung Zwei: Verwenden Sie den zweiten Parameter von forEach, It can Weisen Sie diesem einen Wert zu

var jane = {
  name : 'Jane',
  friends: ['Tarzan', 'Cheeta'],
  sayHiToFriends: function(){
    'use strict';
    this.friends.forEach(function(friend) {
      console.log(this.name + ' says hi to '+ friend);
    }, this);
  }
}
Nach dem Login kopieren

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Sieben Möglichkeiten zum Erstellen von Objekten in JavaScript (Zusammenfassung, unbedingt lesen)

Javascript-Implementierung in Java Map-Objektfunktion (ausführliche Antwort, Code angehängt)

JavaScript-Konstruktor und neuer Operator (wichtig, muss gelesen werden)

Das obige ist der detaillierte Inhalt vonBeispiele zur Erklärung, wie dieser Zeigefehler in JavaScript behoben werden kann (Bild- und Text-Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage