概念
this是函数运行时所在的对象。
使用场合
1.全局环境
全局环境使用this,this指向顶层对象。
2.构造函数
构造函数体里面的this,this指向是构造出来的实例对象。
3.对象的方法
● 如果对象的方法里面包含this,this的指向就是方法运行时所在的对象;
● 该对象某个方法赋值给另一个地方,而不是一整个对象赋值过去,则会改变this的指向;
● 对象的方法里再嵌套的函数里使用的this不一定指向该对象。
绑定this的方法
1.通过call
函数再调用call,call的第一个参数是this指向的对象,后面的参数则是函数调用时所需的参数
注意:如果第一个参数为空、null和undefined,那么默认传进来的是全局对象
2.通过apply
● 函数再调用apply,第一个参数跟call一样,传入一个新的对象;
● 区别是后面的参数需要合并起来放在一个数组中;
● 所以对于apply来说就是2个入参,一个是this需要指向的新的对象,另外一个所有参数组成的数组。
3.通过bind
bind()方法用于将函数体内的this绑定到某个对象,然后返回一个新函数。
第一个参数是this需要指向的对象,后面的参数是函数调用时需要的参数,可以初始化后面的参数。
思维导图
参考:JavaScript教程 | this关键字 | 有很详细的示例分析