首頁 > web前端 > js教程 > ES6 中的箭頭函數與方法宣告:為什麼「this」在箭頭函數中不能如預期運作?

ES6 中的箭頭函數與方法宣告:為什麼「this」在箭頭函數中不能如預期運作?

Linda Hamilton
發布: 2024-12-15 13:41:09
原創
293 人瀏覽過

Arrow Functions vs. Method Declarations in ES6: Why Doesn't `this` Work as Expected in Arrow Functions?

ES6 中的箭頭函數與方法宣告

在深入研究ES6 時,你可能會遇到以下問題:

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
};

person.shout(); // Prints "my name is "
登入後複製

目的是讓函數存取person 物件中的name 屬性。然而,控制台只印出「我的名字是。」

解釋:

這種行為源自於 ES6 中箭頭函數的獨特性質。與傳統函數宣告不同,箭頭函數不綁定 this 關鍵字。相反,它們從周圍的範圍繼承 this 綁定,在本例中是全域範圍。

解決方案:

要解決此問題,您可以使用 ES6 方法聲明模式,它保留了所需的綁定:

var person = {
  name: "jason",

  shout() {
    console.log("my name is ", this.name);
  }
};

person.shout(); // Prints "my name is jason"
登入後複製

以上是ES6 中的箭頭函數與方法宣告:為什麼「this」在箭頭函數中不能如預期運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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