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!