原创 JavaScript學習筆記(二十九) method()方法

method()方法 JavaScript很可能讓那些習慣了從類的角度思考的程序猿感動疑惑。這也是爲什麼一些程序猿選擇讓JavaScript更類一些(class-like)。 其中一種嘗試就是method()方法,這種方法讓JavaScr

原创 JavaScript學習筆記(二十一) 對象創建模式-命名空間模式

在JavaScript中創建對象是非常簡單的,你可以使用對象字面量(object literal)或者使用構造函數(方法)(constructor)。 在這章裏,我們會超出這些,看到一些額外的對象創建模式。 JavaScript語言是簡單

原创 JavaScript學習筆記(十九) 柯里化(Curry)

柯里(Curry) 在接下來,我們會討論的主題是柯里化(currying)和部分函數應用(partial function application),在我們深入這個主題之前,讓我們 首先看看什麼是部分函數用法。 函數應用(Function

原创 JavaScript學習筆記(二十七) 常量

對象常量(Object Constants) 在JavaScript中沒有常量,通常在許多現代環境中可能會給你提供一個const語句去創建一個常量。 一種解決辦法,一個常見的解決辦法就是使用命名規範,讓不應該被改變的變量名稱全部大寫。 這

原创 JavaScript學習筆記(三十) 代碼複用模式

代碼複用模式(Code Reuse Patterns) 代碼複用是一個重要而且有趣的話題,因爲應該儘量少寫代碼而儘可能的複用現有的代碼——你或者其他人已經寫好的代碼。尤其是好的,測試過的,可維護的,可擴展的並且有文檔的代碼。 當談論代碼

原创 JavaScript學習筆記(十六) 初始化時分支

初始化時分支(Init-Time Branching) 初始化時分支(也叫做載入時分支(load-time branching))是一種優化的模式; 當你知道某一個明確的條件在整個程序生命週期中都不會發生改變,那麼只判斷這一次條件就會變的

原创 JavaScript學習筆記(十一) 函數name屬性和函數的提升

另一個考慮使用函數聲明模式是因爲一個只讀的name屬性; 重申一遍,這個屬性不是標準規定的,但在很多環境中都是可以訪問的; 對於函數聲明和命名的函數表達式,name屬性是被定義的; 未命名的函數表達式,取決了具體的實現,可能是未定義(IE

原创 JavaScript學習筆記(十) 函數聲明VS函數表達式

我們應該在什麼時候使用函數聲明或函數表達式呢? 當你在語法上不能使用函數聲明的時候,你就可以使用函數表達式; 比如:傳遞一個函數作爲參數或者在對象字面量中定義一個函數: // this is a function expression,

原创 JavaScript學習筆記(二十四) 模塊創建構造函數

 模塊創建構造函數(Modules That Create Constructors) 在前面的例子中,創建了一個MYAPP.utilities.array對象,但有時候使用構造函數創建你的對象更方便,你也可以使用模塊模式實現它。 唯一的

原创 JavaScript學習筆記(十二) 回調模式(Callback Pattern)

函數就是對象,所以他們可以作爲一個參數傳遞給其它函數; 當你將introduceBugs()作爲一個參數傳遞給writeCode(),然後在某個時間點,writeCode()有可能執行(調用)introduceBugs(); 這種情況下,

原创 JavaScript學習筆記(十八) 配置對象

配置對象(Configuration Objects) 配置對象模式是一種可以提供簡潔API的一種方式,特別是當你正在構建一個類庫或者其它會被別其它程序使用的代碼。 這是一個不爭的事實,軟件需求在開發和維護時都會改變。當你開始工作的時候,

原创 JavaScript學習筆記(十三) 返回函數和"自定義"函數

返回函數(Returning Functions) 函數是對象,所以它們可以被當做返回值; 這意味着一個函數不一定要返回某種數據或數據的數組作爲它的返回值; 一個函數可以返回另一個更加專業的函數,或者依賴於輸入返回一個合適的函數; 這裏

原创 JavaScript學習筆記(十七) 方法的屬性

方法的屬性(Function Properties) 函數是對象,所以它們可以有屬性。事實上,它們有很多可以使用的屬性; 比如:每個函數,無論你用什麼樣的語法形式創建的,都會自動得到一個 length 的屬性,包含了函數期待的參數的個數

原创 JavaScript學習筆記(十四) 立即執行函數

立即執行函數(Immediate Functions) 立即執行函數模式是一種語法,可以讓你的函數在定義後立即被執行,比如: (function () { alert('watch out!'); }());這種模式本質上就是函數

原创 JavaScript學習筆記(十五) 對象即時初始化

對象即時初始化(Immediate Object Initialization) 另一種可以防止全局作用域"污染",和前面的數的立即執行函數類似,就是對象即時初始化(Immediate Object Initialization)模式;