function的命名空間
在javascript中,function也可以擁有自己的命名空間
例如以下這段程式碼:
1 | function () { |
我們可以在console得到以下內容:
1 | I am A |
可以發現即使A被宣告成一個function,它依然可以像object一樣被assign其中的其他attribute,而直接呼叫A本身也還是它原來function的功能
getter、setter
在javascript中,this會是呼叫它的對象,可以參考這裡
因此我們可以結合命名規則的特性寫成這個樣子
1 | function () { |
這裡我們在function A中定義了兩個變數Name, Gender
然後分別使用A中的兩個function來作為存取他們的getter與setter
若我們不傳任何參數給a.Name與a.Gender的話,將可透過他們得到A中的兩個local變數,因此這裡的console將會印出:
1 | john |
而若我們有傳參數的話,例如這樣:
1 | console.log(a.Name('alice').Name()); |
這兩個函數將會作為setter使用,並會回傳f以便繼續呼叫其他變數
這是因為我們在這兩個function中回傳了this,因此我們又重新得到了呼叫他的物件f,故可以在console中得到:
1 | alice |
這裏我們看到可以將function作為一般命名空間使用,另外透過this也能實作getter、setter來存取這個命名空間中的變數