-
普通函数:this 看调用方式
-
箭头函数:this 看定义时外层
-
call / bind 能改普通函数的 this,改不了箭头函数
这里输出的x是10. 因为箭头函数的x是在定义时候就决定了的.而这里定义的时候getX绑定了foo的实例.foo的实例绑定的x就是10.
属于运行时创建
- 先定义了一个普通函数
Foo - 等以后你真的执行
Foo()或new Foo()时 - JS 才会进入
Foo函数体 - 执行到这一行时,现场创建 这个箭头函数
- 然后把它赋值给
this.getX
function Foo() {
this.x = 10
this.getX = () => this.x
}
const f = new Foo()
const g = f.getX
console.log(g())