Voir la définition d'objet suivante:
'Utilisez strict'var jane = {name:' jane ', affichage: function () {retrun' personne nommée '+ this.name; }};Cela appellera normalement
jane.display ();
L'appel suivant entraînera une erreur:
var func = jane.display; func ()
TypeError: Impossible de lire la propriété «Nom» d'Undefined
Parce que ce pointeur a changé, la bonne façon est la suivante:
var func2 = jane.display.bind (jane); func2 ()
'Penson nommé Jane'
Toutes les fonctions ont leurs variables spéciales, comme le foreach ci-dessous
var jane = {name: 'Jane', amis: ['Tarzan', 'Cheeta'], SayHitofriends: function () {'use strict'; this.friends.ForEach (function (ami) {// 'this' est indéfini ici console.log (this.name + 'dit salut à' + ami);}); }}Appeler Sayshitofriends produira une erreur:
jane.sayhitofriends ()
TypeError: Impossible de lire la propriété «Nom» d'Undefined
Solution 1: Enregistrez ceci dans différentes variables
var jane = {name: 'Jane', amis: ['Tarzan', 'Cheeta'], SayHitofriends: function () {'use strict'; var that = this; this.friends.ForEach (function (ami) {console.log (that.name + 'dit salut à' + ami);}); }}Solution 2: Utilisez le deuxième paramètre de Foreach, qui peut spécifier une valeur à ce
var jane = {name: 'Jane', amis: ['Tarzan', 'Cheeta'], SayHitofriends: function () {'use strict'; this.friends.ForEach (fonction (ami) {console.log (this.name + 'dit bonjour à' + ami);}, this); }}