函數(shù)是JavaScript世界里的第一公民,換句話來說,就是我們?nèi)绻梢跃↗avaScript函數(shù)的使用,那么對(duì)JavaScript的運(yùn)用可以更游刃有余了。熟悉JavaScript的人應(yīng)該都知道,同樣的函數(shù),以不同的方式調(diào)用的話,受影響最大的應(yīng)該是 this 。下面我們來說說JavaScript函數(shù)的各種調(diào)用模式。
一、普通函數(shù)的調(diào)用模式
所謂普通函數(shù)的調(diào)用模式,也是JavaScript函數(shù)的最簡單的一種調(diào)用模式,直接就是函數(shù)名后接一個(gè) () 實(shí)現(xiàn)調(diào)用,看下面代碼:
function func(){ console.log(this === window); //true } func();
上面代碼,我們用function關(guān)鍵字聲明了一個(gè) func 函數(shù),并且在函數(shù)體內(nèi)打印 this===window,然后我們直接調(diào)用函數(shù)func,我們可以看到控制臺(tái)是直接打印出 true ,也就是說,函數(shù)的這種普通調(diào)用模式,函數(shù)體內(nèi)的 this 是指向全局環(huán)境 window 的。不清楚這點(diǎn)的同學(xué),可以能會(huì)遇到這樣的一個(gè)bug:
var color = 'gg';var obj = { color : 'red', show : function(){ function func1(){ console.log(this.color); //gg } func1(); }