學(xué)習(xí)內(nèi)容來自:《JavaScript高級程序設(shè)計(第三版)》

正文:我們知道,在js中,函數(shù)實際上是一個對象,每個函數(shù)都是Function類型的實例,并且都與其他引用類型一樣具有屬性和方法。因此,函數(shù)名實際上是指向函數(shù)對象的指針,不與某個函數(shù)綁定。在常見的兩種定義方式(見下文)之外,還有一種定義的方式能更直觀的體現(xiàn)出這個概念:

var sum = new Function("num1", "num2", "return num1 + num2"); //不推薦

  Function的構(gòu)造函數(shù)可以接收任意數(shù)量的參數(shù),但最后一個參數(shù)始終被看做函數(shù)體。這種方式有個缺點是,會導(dǎo)致解析兩次代碼,第一次是基礎(chǔ)的ES代碼解析,第二次是解析傳入構(gòu)造函數(shù)中的字符串,這樣會導(dǎo)致性能的下降,在此寫出是幫助理解js中函數(shù)其實是對象這個概念。

?。ㄒ唬﹋s函數(shù)沒有重載的概念

  說到重載的概念,我們來類比Java中的重載是怎么實現(xiàn)的:在Java中,方法是通過方法簽名來唯一標識一個方法。方法簽名包括:方法名、參數(shù)數(shù)量、參數(shù)順序和參數(shù)類型這幾個要素。因此兩個方法的方法名相同,而其他簽名要素不同,編譯器就會認為是兩個不同方法,從而可以存在同名的不同方法,以實現(xiàn)重載的概念。(引用:怎么深入理解js中為什么沒有重載呢--segmentfault  中manxisuo的回答)。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式