Siehe die folgende Objektdefinition:
'Verwenden Sie strict'var jane = {name:' jane ', display: function () {retrun' Person namens ' + this.name; }};Dies wird normal anrufen
jane.display ();
Der folgende Anruf verursacht einen Fehler:
var func = jane.display; func ()
TypeError: Eigentum kann nicht und definierte Eigenschaften lesen
Da sich dieser Zeiger geändert hat, ist der richtige Weg wie folgt:
var func2 = jane.display.bind (jane); func2 ()
"Penson namens Jane"
Alle Funktionen haben ihre besonderen diese Variablen, wie z. B. die Foreach unten
var jane = {name: 'Jane', Freunde: ['Tarzan', 'Cheeta'], Sayhitofriends: function () {'strict'; this.friends.foreach (Funktion (Freund) {// 'this' ist hier nicht definiert console.log (this.name + 'sagt Hallo zu' + Freund);}); }}Das Aufrufen von Sayshitofriends erzeugt einen Fehler:
jane.sayhitofriends ()
TypeError: Eigentum kann nicht und definierte Eigenschaften lesen
Lösung 1: Speichern Sie dies in verschiedenen Variablen
var jane = {name: 'Jane', Freunde: ['Tarzan', 'Cheeta'], Sayhitofriends: function () {'strict'; var das = dies; this.friends.foreach (Funktion (Freund) {console.log (that.name + 'sagt Hallo zu' + Freund);}); }}Lösung 2: Verwenden Sie den zweiten Parameter von foreach, der einen Wert dazu angeben kann
var jane = {name: 'Jane', Freunde: ['Tarzan', 'Cheeta'], Sayhitofriends: function () {'strict'; this.friends.foreach (Funktion (Freund) {console.log (this.name + 'sagt Hallo zu' + Freund);}, dies); }}