Heim  >  Artikel  >  Web-Frontend  >  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)

亚连
亚连Original
2018-05-21 09:48:231752Durchsuche

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;
  }
};

Auf diese Weise wird

jane.display();

Der folgende Aufruf erfolgt falsch:

var func = jane.display;
func()

TypeError: Cannot read property 'name' of undefined

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

var func2 = jane.display.bind(jane);
func2()

'Penson named Jane'

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);
    });
  }
}

Der Aufruf von sayHiToFriends erzeugt einen Fehler:

jane.sayHiToFriends()

TypeError: Cannot read property 'name' of undefined

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);
    });
  }
}

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);
  }
}

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!

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