class中函数的this指向

HaoOuBa
2021-05-29 / 6 评论 / 188 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年05月29日,已超过548天没有更新,若内容或图片失效,请留言反馈。

定义一个基础的类

class Person {
    constructor(name = '杜恒') {
        this.name = name
    }
    speak() {
        console.log(this);
    }
}

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

const p = new Person()
p.speak() // Person {name: "杜恒"}
上面的打印结果显示由类构造出的实例对象,因此this会指向由类构造出的实例对象

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

const test = p.speak
test() // undefined

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

const test = function () {
    "use strict"
    console.log(this);
}
test() // undefined
由此可以得出,在class中,定义的方法,class会默认在函数体内开启严格模式,严格控制this的指向
3

评论 (6)

取消
  1. 头像
    Dotdotmaples
    Windows 10 · Google Chrome
    该回复疑似异常,已被系统拦截!
    回复
  2. 头像
    1
    Windows 10 · Google Chrome

    画图

    回复
  3. 头像
    ss
    Windows 10 · Google Chrome

    dfdf

    回复
  4. 头像
    爱Joe
    MacOS · Google Chrome

    牛呀牛呀臭宝♥️

    回复
    1. 头像
      HaoOuBa 作者
      Windows 10 · Google Chrome
      @ 爱Joe

      画图

      回复
    2. 头像
      HaoOuBa 作者
      Windows 10 · Google Chrome
      @ 爱Joe

      表情

      回复