博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

call apply bind 异同

Posted on 2021-03-05 14:44  米粒3  阅读(41)  评论(0编辑  收藏  举报

相同点:1.都是用来改变函数的this对象指向的

2.调用时第一个参数都是需要指向的新对象

3.都可以利用后续参数传参

不同点:call、apply都是对函数的直接调用,而bind返回的是一个函数,需要进行再次调用才可以使用;

传递参数方式不同:call、bind 传递的是逗号分割的参数字符串,而apply第二个参数是一个数组;

具体使用如下:

let person={
    name:'zhangsan',
    age:12,
    say:function(school){
        console.log(this.name,this.age,school);
    }
}

let newobj={
   name:'lisi',
   age:123
}

//运用call、apply、bind 改变person中this指向
person.say.call(newobj,'清华大学');


person.say.apply(newobj,['北京大学']);


person.say.bind(newobj,'五道口学院')();