学无先后,达者为师

网站首页 编程语言 正文

call、apply、bind三者的用法和区别

作者:慢羊羊头上没草 更新时间: 2023-07-27 编程语言
    var obj={
      name:'Li lei',
      age:18,
      intr:function(){
        console.log(`1我叫${this.name},我${this.age}岁`);
      }
    }

    var obj2={
      name:'Han meimei',
      age:20,
      intr:function(){
        console.log(`2I'm ${this.name},I'm ${this.age} years old`);
      }
    }

    // obj.intr.call(obj2)
    // obj2.intr.call(obj)
    // obj.intr.apply(obj2)
    obj.intr.bind(obj2)()

    obj.intr.call( obj2, 20, '中国' );       //我叫Han meimei,我20岁,我来自中国
    obj.intr.apply( obj2, [ 20, '中国' ] );  //我叫Han meimei,我20岁,我来自中国
    obj.intr.bind( obj2, 20, '中国' )();       //我叫Han meimei,我20岁,我来自中国

        call、apply、bind可以将某个函数的this指向修改为传入这三个方法中的第一个参数,其中call、apply会立即执行,bind返回的是一个函数,需调用后执行。

第二个参数是传入要执行的方法中的参数,call、bind是独立传递参数,apply是以数组传递参数的

使用场景:
1、需要改变某个函数的this指向时
2、当参数较少时可以使用call,参数较多可以使用apply以数组的方式传递
3、当需要重复调用时,可以使用bind新定义一个方法
 

原文链接:https://blog.csdn.net/yzwlogo/article/details/131735586

  • 上一篇:没有了
  • 下一篇:没有了
栏目分类
最近更新