JS中this问题
1、this是什么?
-所有函数内部都有一个变量this,是函数运行时,在函数内部自动生成了一个对象,只能在函数中使用
- 函数使用的方式不同,this不同。this就是调用当前函数的对象(函数运行时所在的环境对象)
2、this指向问题
![](https://img2018.cnblogs.com/blog/1779093/201910/1779093-20191011143352455-1341492580.png)
3、改变this指向(重定向)
三种方式:apply、call与bind
-B.apply(obj, arguments):接受两个参数,新对象和数组,向方法中传入的参数必须放在数组中,即使只有一个参数也是
-B.call(obj, args1,args2):接受多个参数
-bind(obj, arguments):返回一个新函数,需要重新调用
例如:
p.setColor.call(obj,"black",'red','blue');
p.setColor.apply(obj,["black",'red','blue']);
let newFun=p.setColor.apply(obj,["black",'red','blue']);
newFun()
4、特殊情况