學(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的回答)。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26