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

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

Linda Hamilton
Linda Hamilton原創
2024-12-15 13:41:09298瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn