class中函数的this指向
25-04-07
slbcun
704℃
0
定义一个基础的类
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的指向