this指向
1.普通调用this指向window 严格模式下指向undefined
2.作为对象的属性 指向对象 多层调用指向当前调用者obj.obj2.fn() 指向obj2
3.箭头函数的this 不会自己创建this 是从上层作用域继承this的指向
箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。
obj={fn:()=>{console.log(this)}} //this 指向window
4.call apply bind 改变this的指向
call apply 第一个参数为this指向 第二个参数为传参 apply传参为数组
bind返回一个改变了this指向的新函数
5.构造函数的this指向 实例
new 调用时,返回一个新对象 新对象绑定到函数调用的this上
new调用时自动执行
1.创建一个新对象
2.新对象绑定到函数调用者上 新对象._proto_=构造函数.prototype
3.执行构造函数
4.如果函数没有返回其他对象,那么 new 表达式中的函数调用会自动返回这个新对象。
this 绑定的优先级: new > 显示绑定 > 隐式绑定 > 默认绑定
默认绑定-1.默认函数指向window
隐式绑定-2.object-3.箭头函数
显示绑定-4.apply call bind
new-5.构造函数