THIS:全局上下文中的this是window,块级上下文中没有自己的this,它的this是继承上下文中的this的。在函数私有上下文中,this的情况多种多样。
this不是执行上下文(EC),this是执行主体
/
区分执行主体:
1.事件绑定:给元素绑定事件,当事件行为触发,方法执行,this指向元素本身(IE6-8不支持,attachEvent执行)
2.普通方法执行:只需要看方法执行前有没有"点",有“点”,this指谁。没有点,指向window,开启严格模式就是underfine
3.构造函数(new xxx)this是当前类的实例
4.箭头函数=>:没有自己this,继承所在上下文的this
5.可以基于call、apply、bind等方式,强制手动改变var函数的this指向:这三种模式直接暴力,手动改
*/




练习
`
var num=10;
var obj={
num:20
}
obj.fn=(function(num){
this.num=num*3;
num++;
return function(n){
this.num+=n;
num++;
console.log(num)
}
})(obj.num)
var fn=obj.fn;
fn(5)
obj.fn(10)
console.log(num,obj.num)
`

网友评论