小实例理解:call apply bind

call apply bind 都是用于改变函数this的指向

    var cat={
        name:'猫咪',
        eatFish:function(fish,method){
            console.log(this.name+'吃'+fish+','+method)
            console.log('this指向:',this)
        }
    }

    var dog={
        name:'小狗',
        eatBone:function(){
            console.log('吃骨头')
        }
    }

call()/ apply()

有只狗和猫,猫会吃鱼,狗不会,狗想吃鱼,猫就先吃再喂给狗
这里有两种方式:call,apply,传参数方法不同,功能都是改this指向
它们都是直接执行

    cat.eatFish.call(dog,'拉丁鱼','call') //改变this指向至dog,直接运行
    cat.eatFish.apply(dog,['黄鱼','apply']) //以数组传参,直接运行

结果:

小狗吃拉丁鱼, this指向: {name: “小狗”, eatBone: ƒ}
小狗吃黄鱼,apply this指向: {name: “小狗”, eatBone: ƒ}

bind()

猫天天喂狗也不是个事,此时就有,建立一个方法,交给狗,这样狗就可随时吃鱼了
bind()返回一个方法,而不是直接执行

    var dogEatFish=cat.eatFish.bind(dog,'各种鱼','bind') //返回一个方法
    console.log(dogEatFish)

    dogEatFish() //运行返回的方法

结果:

ƒ (fish,method){
console.log(this.name+‘吃’+fish+’,’+method)
console.log(‘this指向:’,this)
}

小狗吃各种鱼,bind
this指向: {name: “小狗”, eatBone: ƒ}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值