初探 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。
沒有留言:
張貼留言