提问人:Đức Hoàng 提问时间:3/13/2021 最后编辑:Đức Hoàng 更新时间:3/13/2021 访问量:134
类中的箭头函数
Arrow function in class
问:
代码 1:
class X1 {
x = 1;
get = () => this;
}
a = new X1();
console.log(a.get());
代码 2:
var X1={
x:1,
get:()=>this
}
console.log(X1.get())
我不知道为什么代码 1 的结果是 X1,而代码 2 是 Window。 希望大家能帮助我!!
答:
5赞
CertainPerformance
3/13/2021
#1
类字段是用于在构造函数中赋值的语法糖。代码 1 等效于:
class X1 {
constructor() {
this.x = 1;
this.get = () => this;
}
}
在构造函数中,引用正在创建的实例 - .箭头函数继承自其外部作用域。因此,返回的与外部作用域中的相同 - 实例或 .this
a
this
this.get = () => this;
this
this
a
在代码 2 中,外部作用域是顶层。 顶层是全局对象(在浏览器中为 ),或者 。因此,返回的箭头函数在顶层返回 - 在浏览器中的草率模式下,这就是窗口。this
window
undefined
get
this
this
评论