class中函数的this指向

2023-04-27 20:24:08 浏览数 (1)

定义一个基础的类

代码语言:javascript复制
class Person {
    constructor(name = '杜恒') {
        this.name = name
    }
    speak() {
        console.log(this);
    }
}

将上面的类实例出一个对象p,并调用p的speak方法

代码语言:javascript复制
const p = new Person()
p.speak() // Person {name: "杜恒"}

上面的打印结果显示由类构造出的实例对象,因此this会指向由类构造出的实例对象

尝试将p实例对象身上的speak方法赋值给另一个变量进行调用

代码语言:javascript复制
const test = p.speak
test() // undefined

打印undefind,因此上面的方法可以改写成如下

代码语言:javascript复制
const test = function () {
    "use strict"
    console.log(this);
}
test() // undefined

由此可以得出,在class中,定义的方法,class会默认在函数体内开启严格模式,严格控制this的指向

0 人点赞