10

ECMAScript 6 の矢印関数を理解しようとしています。

これは、読んでいるときに出くわした定義です。

アロー関数には暗黙thisのバインディングがあります。つまり、アロー関数内の値の値は、アロー関数が定義されているスコープ内thisの値と同じです!this

定義によると、アロー関数が定義されたのと同じブロック レベルの値が含まれてthisいる必要があると思います。arrow function

コード:

var test = {
  id: "123123",
  k: {
    laptop: "ramen",
    testfunc: () => console.log(this)
  }
}

console.log(test.k.testfunc);

ただし、コードからこの結果を得ています

function testfunc() {
    return console.log(undefined);
}

私が得ると思ったのは、次の出力です。

{"laptop": "ramen"}

これを実行した場合

console.log(test.k.testfunc());

4

2 に答える 2

3

定義したのと同じスコープでアロー関数を定義していますvar test。グローバル スコープで定義testしている場合、アロー関数のコンテキストもグローバル スコープになります。

メソッド内で test を定義している場合、アロー関数はメソッドのコンテキストを共有します。

function method() {
  const self = this;

  const test = {
    foo: () => console.log(self === this);
  }

  test.foo()
  // console: true
}
于 2015-07-27T07:59:50.973 に答える