一、什么是arguments
arguments 是是JavaScript里的一個內置對象,它很古怪,也經常被人所忽視,但實際上是很重要的。所有主要的js函數庫都利用了arguments對象。所以agruments對象對于javascript程序員來說是必需熟悉的。
所有的函數都有屬于自己的一個arguments對象,它包括了函所要調用的參數。他不是一個數組,如果用typeof arguments,返回的是'object'。雖然我們可以用調用數據的方法來調用arguments。比如length,還有index方法。但是數 組的push和pop對象是不適用的。
二、創建一個靈活的函數
看起來貌似argument對象使用起來十分有限,但是實際上它是一個非常有用的對象。你可以通過使用argument對象讓函數能夠調用數量不定 的參數。在Dean Edwards的base2庫里有個格式化的函數,展示了這個靈活性。
};
我們提供了一個模板字符串,你可以用”%1”到“%9”給返回值添加一個占位符。然后提供給九個其他參數插入。
第一個argument對象給makeFunc提供了你想調用的函數的引用。他是從arguments數組里移除的。然后makeFunc返回了一個匿名函數去運行規定的方法。
第一個應用的argument指向了函數調用的范圍,主要是函數內部關鍵部分所指向的。我們先保持這個為null。第二個arguments是一個 數組,會為這個函數轉變為arguments對象。makeFunc把原始的數組值串聯到arguments對象里提供給匿名函數和所調用函數的數組。
你需要輸出一個模板總是相同的位置,這樣就可以不用總是在每次引用模板的時候調用format函數。你可以使用makeFunc的通用功能去返回可以調用format然后自動補充模板的函數。
你可以像這樣調用majorTom函數: