9

以下のこのコードは期待どおりに機能し、ログ"meow"に記録されます。ここでは例です。

function Cat () {
  this.animalNoise = 'meow' 
}

Cat.prototype.sound = () => {
  console.log(this.animalNoise)
}

let cat = new Cat()
cat.sound()

動作しません。このエラーが表示され、アロー関数を実際の宣言にTypeError: Cannot read property 'animalNoise' of undefined変換すると動作します。functionアロー関数のように見えますが、アクセスできなくなりましたthis。何が起きてる?

明確にするために、上記のコードは次の場所では機能しません。その理由が非常に気になります。

function Cat () {
  this.animalNoise = 'meow' 
}

Cat.prototype.sound = function() {
  console.log(this.animalNoise)
}

let cat = new Cat()
cat.sound()
4

1 に答える 1