次のオブジェクト定義を参照してください。
'Strict'var Jane = {name:' Jane '、display:function(){retrun' named ' + this.name; }};これは正常に呼び出されます
jane.display();
次の呼び出しでエラーが発生します。
var func = jane.display; func()
TypeError:未定義のプロパティ「名前」を読むことができません
このポインターが変更されたため、正しい方法は次のとおりです。
var func2 = jane.display.bind(jane); func2()
「ジェーンという名前のペンソン」
すべての関数には、以下のforeachなど、特別なこの変数があります
var Jane = {name: 'Jane'、Friends:['Tarzan'、 'Cheeta']、sayhitofriends:function(){'surtict'; this.friends.foreach(function(friend){// 'this'はここで定義されていません。 }}sayshitofriendsを呼び出すと、エラーが発生します。
jane.sayhitofriends()
TypeError:未定義のプロパティ「名前」を読むことができません
ソリューション1:これをさまざまな変数に保存します
var Jane = {name: 'Jane'、Friends:['Tarzan'、 'Cheeta']、sayhitofriends:function(){'surtict'; var that = this; this.friends.foreach(function(friend){console.log(that.name + 'は' + friend);}); }}ソリューション2: foreachの2番目のパラメーターを使用して、これに値を指定できます
var Jane = {name: 'Jane'、Friends:['Tarzan'、 'Cheeta']、sayhitofriends:function(){'surtict'; this.friends.foreach(function(friend){console.log(this.name + 'は' + friend);}、this); }}