0
シンプルなES5コードをES6に変換しようとすると、ちょっと困惑しています。矢印関数はcall、apply、bindを使用しています - 動作していませんか?
var obj = {num: 2}
var addToThis = function (a, b, c) {
return this.num + a + b + c
}
// call
console.log(addToThis.call(obj, 1, 2, 3))
// apply
const arr = [1, 2, 3]
console.log(addToThis.apply(obj, arr))
// bind
const bound = addToThis.bind(obj)
console.log(bound(1, 2, 3))
すべてが上記の円滑かつ期待通りに動作します:
のは、私はこのコードのブロックを持っているとしましょう。
しかし、すぐに、私はこのように、constの矢印機能などES6機能を使い始めるよう:
const obj = {num: 2}
const addToThis = (a, b, c) => {
return this.num + a + b + c
}
それはもう動作し、エラーをスローしませんが、未定義のプロパティ「NUM」を読み取ることができません。
誰かがthis
がもう動作しない理由を説明してもらえますか?