函式的屬性和方法
阿新 • • 發佈:2018-12-04
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)。