javascript学习 – bind()方法及this指向问题

  • javascript学习 – bind()方法及this指向问题已关闭评论
  • 130 次浏览
  • A+
所属分类:Web前端
摘要

首先 在类中的方法中。this 要看是谁调用的。如果是实例调用的,那么这个this就是这个实例。如:

首先 在类中的方法中。this 要看是谁调用的。如果是实例调用的,那么这个this就是这个实例。如:

class Student {     constructor(flag) {         this.flag = flag     }      mark(){         console.log(this);       } } const s1 = new Student('jack') s1.mark()

结果:

javascript学习 - bind()方法及this指向问题

 

如果不是实例调用的,类中的方法默认会开启严格模式,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()

结果:

javascript学习 - bind()方法及this指向问题

可以通过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里。