简单理解this指向
2019-06-22 本文已影响0人
Sun晨淏
this的指向
- 函数中的this是在运行时候决定的,而不是函数定义时
全局环境中的this指window
其他函数中的this指向调用它的对象
使用call和apply改变函数中this的具体指向
apply的参数需要放在一个数组里面
bind改变this指向
fn.bind(o) - 改变this指向的方法
call和apply方法的使用
函数体.call(obj)
obj1={
fn:function(){
}
}
obj2 = {
fn:function(){
}
}
obj1.fn.call(obj2,,,,,,) call方法传参只需要使用多个逗号隔开
apply方法需要将参数放在一个数组里
以上两个方法改变函数的this指向并立即调用该函数
bind在使用形式上合上面两个call和apply一样
只不过不立即调用,经常在定时器,或其他回调函数等不立即调用的函数改变this指向时使用
setTimeout(function(){}.bind(obj),1000)
该匿名函数在1000毫秒后调用,使用bind改变this指向又不立即调用,符合该使用场景
- apply()方法的应用
参数需要传入一个数组
var obj1 = {
name:'zhangsan',
returName:function(){
return this.name;
}
}
var obj2 = {
name:'lisimao',
returName:function(str){
return this.name+str;
}
}
console.log(obj2.returName.apply(obj1,['666']))
- call()方法的应用()
call方法和apply使用方法一致,只不过参数是直接传,不用数组盛放