apply,call,bind,三大改变this指向

前前前前端的静静又来更新文章了,最近在努力准备考试,当然放不过javaScript了。this在我看来一直是一大难点,this太难了,这里主要说一下改变this指向的三大方法吧(欢迎留言评论哦~)

1.call,apply,bind都是改变this指向的方法,但是bind返回的是一个函数,必须被调用才会起作用哦!!
仔细看下面的代码片段

  var name = 'jingjing',age = 20
        var obj={
            name:'jing',
            objAge:this.age,
            myFun:function(){
                console.log(this.name + '年龄 :'+this.age);
            }
        }
        var db = {
            name:'前端静静',
            age:  'xx',

        }
        obj.myFun.call(db) //前端静静年龄 :xx
        obj.myFun.apply(db) //前端静静年龄 :xx
        obj.myFun.bind(db)() //前端静静年龄 :xx

上面的代码可以看出,bind是函数,是需要调用的

2.另外一种情况下—传参


   var obj={
            name:'jing',
            objAge:this.age,
            myFun:function(from,to){
                console.log(this.name + '年龄 :'+this.age,'来自'+from+'去往'+to);
            }
        }
        var db = {
            name:'前端静静',
            age:  '19',

        }
        obj.myFun.call(db,'洛阳','郑州') //前端静静年龄 :19 来自洛阳去往郑州
        obj.myFun.apply(db,['洛阳','郑州']) //前端静静年龄 :19 来自洛阳去往郑州
        obj.myFun.bind(db,'洛阳','郑州')() //前端静静年龄 :19 来自洛阳去往郑州
        obj.myFun.bind(db,['洛阳','郑州'])() //前端静静年龄 :19 来自洛阳,郑州去往undefined

从上面的例子中可以看出:

  • call的方法传参可以直接传进去,中间逗号隔开,
  • apply则会以数组的方式传进去
  • bind也是直接传进去,以逗号的形式隔开

以上就是这三种方法的区别了,欢迎补充评论~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值