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