美文网首页
js this的指向,apply,call,bind的用法

js this的指向,apply,call,bind的用法

作者: xiao_xie_shen | 来源:发表于2019-01-17 17:14 被阅读0次

this指向


this指向上一级调用它的对象
//例1
var obj1 = {
    a: 10,
    b: function(){
       alert(this.a);
    }
}

obj1.b();//将输出 10,this即是obj1

//例2
var obj2 = {
    a: 10,
    b: function(){
        alert(this.a);
    }
}

var newFuc = obj2.b;
newFuc();//将输出 undefined,this即是window,因为调用newFuc是全局下调用
  

apply,call,bind用法


apply,call,bind都是用来解决上例2 this指向作用域指向非我们想指向的位置时,明确定位this
//衔接以上例2
//例3
var obj2 = {
    a: 10,
    b: function(){
        alert(this.a);
    }
}

var newFuc = obj2.b;
newFuc.apply(obj2);//输出10,因为使用apply将this指向obj2达到所要效果
newFuc.call(obj2);//输出10,因为使用call将this指向obj2达到所要效果
newFuc.bind(obj2)();//输出10,因为使用bind将this指向obj2达到所要效果
第一参数都是传入所需this,后续参数也可以为函数传入所需参数。apply传参以数组的形式,将函数所需参数依次放入数组即可。call和bind传参从第二位开始依次传入即可。
var obj3 = {
    a: 10,
    b: function(param1,param2){
        alert(this.a + param1 + param2);
    }
}

var newFuc = obj3.b;
newFuc.apply(obj3,['个','人']);//输出 10个人

newFuc.call(obj3,'个','人');//输出 10个人

newFuc.bind(obj3,'个','人')();//输出 10个人

  • [x]以上要注意bind返回的是函数,所以必须再次执行才生效。

相关文章

网友评论

      本文标题:js this的指向,apply,call,bind的用法

      本文链接:https://www.haomeiwen.com/subject/tboidqtx.html