函数中this指向问题
函数中this的指向是在函数调用的时候确定的。
- 普通函数的调用,this指向window
- 构造函数调用,this指向实例对象
- 原型对象中的方法调用,--> 实例对象
- 对象方法调用, 对象本身
- 事件绑定方法, 绑定事件对象
- 定时器函数, window
- 立即执行函数, window
this的指向可以改变
call(),apply(),bind(),都可以改变this的指向。
区别:
- call会调用函数,主要作用于构造函数的继承
- apply会调用函数,与call的区别是,第二个参数是数组
- bind不会调用函数,参数与call相同,bind会返回原函数改变指向后的新函数,应用于需要改变this指向,但是并不立即执行的情况。
// 因为apply第二个参数必须是数组格式,我们可以利用这个特性去处理数组
var arr = [1,23,25,69,65,24];
Math.max(1,23,25,69,65,24); // 69
// 一些数组的处理可以考虑用apply,apply将参数数组转为字符串
Math.max.apply(null,arr); // 69