Sooningr
2017-12-02 10:51:04
var?haha?=?function?(x)?{
????(function?(x)?{
????????return?window.alert(x);
????})(x)
};
var?hehe?=?new?haha('Hello?World');//立即執(zhí)行并彈框'Hello?World'
typeof(hehe);//返回一個(gè)'object'對(duì)象集這是一個(gè)可以"重用"的匿名函數(shù)嗎...?這整個(gè)過程怎么解析...?
1 回答

pardon110
TA貢獻(xiàn)1038條經(jīng)驗(yàn) 獲得超227個(gè)贊
僅僅只是初始化,一次性的東西,用過就丟。你new與不new 效果一樣,即都輸出同樣的內(nèi)容。唯一不同的在于,你使用new操作符后,函數(shù)被當(dāng)作構(gòu)造函數(shù)(函數(shù)在不同的場景有不同身份),typeof 實(shí)例? 返回object 類型,不type of haha 為function類型(js引擎執(zhí)行時(shí)使用了包裝器Function)。至于過程解析:先是詞法分析,后活動(dòng)對(duì)象執(zhí)行完畢。構(gòu)造函數(shù)內(nèi)等價(jià)于下。
var?haha?=?function?(x)?{ ????function?t(x)?{ ????????return?window.alert(x); ????} ????t(x); };
至于重用,那倒不至于,很明顯匿名函數(shù)并沒有作用到實(shí)例對(duì)象上。只是初始化時(shí)執(zhí)行了一個(gè)函數(shù),一個(gè)將構(gòu)造參數(shù)綁定到匿名函數(shù)的參數(shù)的函數(shù)。相反你代碼中的匿名函數(shù)倒更偏向于‘構(gòu)造函數(shù)的私有方法(如果將構(gòu)造函數(shù)看作一個(gè)類的話)'.
添加回答
舉報(bào)
0/150
提交
取消