let student = {
fname: "Carlos",
lname: 'Dubón',
sayHi(){
alert(`Hi my name is ${this.fname}`);
},
sayBye: function() {
alert(`Bye ${this.fname}`);
},
sayHiAgain: ()=> {
alert(`Hi my name is ${this.fname}`);
}
}
student.sayHiAgain();
我是 Javascript 中的 OOP 新手,我知道我编写方法的 3 种方式完全相同。
student.sayHi();
工作并显示警报 =>“嗨,我的名字是卡洛斯”
但student.sayHiAgain();
显示警报 =>“嗨,我的名字未定义”
我错过了什么?
当使用箭头函数时,它使用词法作用域,这意味着它指的是它的当前作用域,不再超过那个作用域,即绑定到内部函数而不是对象本身。
箭头函数表达式是正则函数表达式的一种语法紧凑的替代方案,尽管它自身没有绑定到 this、arguments、super 或 new.target 关键字。箭头函数表达式不适合作为方法,它们不能用作构造函数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句