call,apply,bind

共同点:
1.都有两个参数,第一个参数用于改变this指向,第二个是要传的具体数据
2.都用于改变当前对象的作用环境

不同点:1. bind()方法调用后的到的是函数,需要再调用一遍。且bind方法绑定this指向后,无法再通过call或apply进行修改。
2.call第二个参数需要一个个列出来,apply传递的是一个数组,bind与call传递的参数一样。

实例如下:

 var obj1={
         name:'tom'
     };
     var obj2={
         name:"Jerry"
     };
     var name="易洋千玺"
     function show(skill,type){
         var res=this.name+" "+skill+" "+type;
         console.log(res);
     }
     show.call(obj1,'dance','num111');
     //tom dance num111
     show.apply(obj2,['sing','num111']);
     //Jerry sing num111
     show.bind(obj2,"everything","num111")();
     //Jerry everything num111

实例二:(且bind方法绑定this指向后,无法再通过call或apply进行修改。)

function $(name){
          return document.querySelector(name);
      }
     var obj1={
         name:'tom'
     };
     var obj2={
         name:"Jerry"
     };
     var name="易洋千玺"
     function show(skill,type){
         var res=this.name+" "+skill+" "+type;
         return res
     }
     var f=show.bind(obj2,"everything","num111")
     f();
     //"Jerry everything num111"
     f.call(obj1,'dance','num111')//"Jerry everything num111"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值