(一)this
构造函数里面的this,用于给类定义成员(属性和方法)
方法里面的this,指向方法的调用者
箭头函数中没有this,如果在箭头函数中使用了this,会向外层寻找this的指向
如果所有的外层都没有this,最终会指向window对象
注意:用于var定义的成员(变量和方法)都会成为window对象的成员
例:
var address = '安德门'
var showAddress = function(){
console.log(`地点${this.address}`);
}
console.log(window);
showAddress()
window,showAddress()
解决this指向问题:
方式一:备份this
方式二:使用箭头函数(箭头函数是function的简写)
(二)call apply bind
call apply bind 改变this方法里面的指向
1.使用call()改变方法里面,this的指向
call()方法的第一个参数必须是指定的对象,方法的原有参数,挨个放在后面
2.使用apply(),也可以改变方法里面this的指向,第一个参是指定的对象,方法的原有参数,统一放到第二个数组参数中。
3.使用bind(),也可以改变方法里面this的指向,用法给call()一样
call()是直接运行方法,bind()是返回新的方法,然后再重新调用。