首頁 > web前端 > js教程 > 實例講解JavaScript中的this指向錯誤解決方法(圖文教學)

實例講解JavaScript中的this指向錯誤解決方法(圖文教學)

亚连
發布: 2018-05-21 09:48:23
原創
1857 人瀏覽過

JavaScript中this指向的處理是令大家普遍頭痛的問題,這裡我們舉一個實例講解JavaScript中的this指向錯誤解決方法,需要的朋友可以參考下

看如下物件定義:

'use strict'
var jane = {
  name : ‘Jane',
  display : function(){
    retrun 'Person named ' + this.name;
  }
};
登入後複製

這樣能正常呼叫

#
jane.display();
登入後複製

下面的呼叫會出錯:

var func = jane.display;
func()
登入後複製

TypeError: Cannot read property 'name' of undefined
登入後複製
登入後複製

因為,this指向已經改變,正確的方式如下:

var func2 = jane.display.bind(jane);
func2()
登入後複製

'Penson named Jane'
登入後複製

所有函數都有其特殊的this變量,如下面的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);
    });
  }
}
登入後複製

呼叫sayHiToFriends會產生一個錯誤:

jane.sayHiToFriends()
登入後複製

TypeError: Cannot read property 'name' of undefined
登入後複製
登入後複製

解決方案一:將this保存在不同的變數中

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);
    });
  }
}
登入後複製

#解決方案二:利用forEach的第二個參數,它可以給this指定一個值

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);
  }
}
登入後複製

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

JavaScript創建物件的七種方式(總結,必讀)

javascript實作Java中的Map物件功能的(詳細解答,附上程式碼)

JavaScript建構子及new運算子(重點,必讀)

#

以上是實例講解JavaScript中的this指向錯誤解決方法(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板