- A+
所属分类:Web前端
首先 在类中的方法中。this 要看是谁调用的。如果是实例调用的,那么这个this就是这个实例。如:
class Student { constructor(flag) { this.flag = flag } mark(){ console.log(this); } } const s1 = new Student('jack') s1.mark()
结果:
如果不是实例调用的,类中的方法默认会开启严格模式,this会变成undefined。不开启严格模式,this是Window。
class Student { constructor(flag) { this.flag = flag } mark(){ console.log(this); } } const s1 = new Student('jack') const out = s1.mark out()
结果:
可以通过bind方法来绑定,首先看一下这个方法
class Student { constructor(flag) { this.flag = flag } mark(){ console.log(this); } } const s1 = new Student('jack') const out = s1.mark out() const x = s1.mark.bind(s1); x();
研究了好久也没有理解这个方法的含义。其实这个要从后往前看,首先分为是谁来调用(X),入参是什么(Y),返回的是什么(Z)。
根据定义我们可以知道返回的是一个函数/方法(即Z是一个函数)。
这个bind其实就是把一个对象(Y)的一个方法(X)提取出来(Z)最后是一个方法
所以这里就是把 Student对象实例变量s1 的mark方法 绑定到变量x里。