1. 程式人生 > >函式的屬性和方法

函式的屬性和方法

name 屬性

函式的name屬性返回函式的名字

function f1() {}
f1.name // "f1"

如果是通過變數賦值定義的函式,那麼name屬性返回變數名 

var f2 = function () {};
f2.name // "f2"

但是,上面這種情況,只有在變數的值是一個匿名函式時才是如此。如果變數的值是一個具名函式,那麼name屬性返回function關鍵字之後的那個函式名。

var f3 = function myName() {};
f3.name // 'myName'

上面程式碼中,f3.name返回函式表示式的名字。注意,真正的函式名還是f3

,而myName這個名字只在函式體內部可用。

name屬性的一個用處,就是獲取引數函式的名字。

var myFunc = function () {};

function test(f) {
  console.log(f.name);
}

test(myFunc) // myFunc

上面程式碼中,函式test內部通過name屬性,就可以知道傳入的引數是什麼函式

length 屬性

函式的length屬性返回函式預期傳入的引數個數,即函式定義之中的引數個數。

function f(a, b) {}
f.length // 2

上面程式碼定義了空函式f,它的length

屬性就是定義時的引數個數。

不管呼叫時輸入了多少個引數,length屬性始終等於2。

length屬性提供了一種機制,判斷定義時和呼叫時引數的差異,以便實現面向物件程式設計的”方法過載“(overload)。