日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新