2025年3月10日 星期一

取得 Function 的引數的數量

 取得 Function 的引數的數量

前言

  由於先前的 初探 Function.toString() 的關係,Funciton:Length  直覺上會認為是回傳程式碼的字數,但事實上不是,在此把學習的過程做個紀錄。


內容

  範例如下

function fun0(){}
function fun1( a ){}
function fun2( a , b ){}
function fun3( a , b , c ){}
//
console.log( fun0.length );//0
console.log( fun1.length );//1
console.log( fun2.length );//2
console.log( fun3.length );//3


Funciton:Length 回傳的是引數數量,並非程式碼的字數,範例分別是分了從沒引數到3個引數的狀況。


參考資料

[ developer.mozilla.org ] Function: length


相關文章與資料

初探 Function.toString()

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()