this指向(分场景)
1.普通函数
function fn(){
console.log(this); //this指向全局window
}
fn()
2.构造函数(首字母大写)
function Fn(a,b){
this.a=a;
this.b=b;
console.log(this); //this指向构造函数的实例
}
var Fn = new Fn(1,2);
3.object对象中this指向问题
var obj = {
'name':'巴拉巴拉',
'age':'18',
fn(){
console.log(this.name); //对象中this指向当前对象obj
}
}
obj.fn()
4.事件对象中this指向问题
<button οnclick='fn()'></button>
function fn(){
console.log(this); //this指向事件前对象,谁触发点击事件,this指向谁
}
改变this指向的方法
1.call(参数1,参数2)
参数1:this改变后指向的对象
参数2:这里写函数参数(实参)
2.apply(参数1,参数2)
参数1:this改变后指向的对象
参数2:以数组的形式表达,数组里面写参数
3.bind() 和call()和apply作用一样, 只是call()和apply()会调用,bind()只会改变this指向,不会被调用执行
this指向总结
1.普通函数中,this指向全局window
2.构造函数this指向new的实例对象
3.对象object中this指向当前对象
4.事件中,this指向事件前对象