以下のこのコードは期待どおりに機能し、ログ"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()