2025年3月3日 星期一

初探 Function.bind()

 初探 Function.bind()

前言

  最近查找 Function 發現裡面有個 Function.bind() ,在此把學習的過程做個紀錄。


內容

  範例如下

let objA = {
  x : 1234,
  getX : function(){
    return this.x;
  }
};
let objB = {
  x : 5566,
};
//
console.log( objA.getX() );//1234
//
x = 9999;
let call = objA.getX;
console.log( call() );//9999
//
let bindCall = objA.getX.bind(objB);
console.log( bindCall() );//5566


Function.bind() 的作用是決定該 Function 在喚起時的 this 會是哪個物件,範例的 objA.getX() 就是單純的成員函式喚起,接著透過 call 來喚起時,如果不做 Function.bind()  的話會得到 9999 ,範例有設定 global 的 x 是 9999 ,最後用 Function.bind()  綁定到 objB 上,要注意 objB 本身是沒有 getX() 的!只是成員也有 x ,綁定完後喚起會得到 objB.x 的內容,也就是 5566。 


參考資料

[ developer.mozilla.org ] Function.prototype.bind()

沒有留言:

張貼留言