this:当前方法执行的主体(谁执行的这个方法,那么this就是谁,所以this和当前方法在哪创建或者在哪执行都没有必然的关系)
- 1.给元素的某个事件绑定方法,方法中的this都是当前操作元素的本身
- 2.函数执行,看函数前面是否有点,有的话,点前面是谁this就是谁,没有点,this是window(在js的严格模式下,没有点this是undefined)
- 3.构造函数执行,this一般是当前类的实例
let Fn = function () {
this.x = 100;
};
let f = new Fn;
- 4.箭头函数中没有自己的this,this是上下文中的this
let obj = {
fn: function () {
setTimeout(() => {
}, 1000);
}
};
obj.fn();
let obj = {
fn: function () {
console.log(this);
}
};
obj.fn();
;(12, obj.fn)();
- 6.使用call/apply/bind可以改变this指向
fn.call(obj);
fn.call(12);
fn.call();