<javaScript語言精粹>這本書寫的很好,可以說句句是精華。這麼薄的一本書講JavaScript的特點介紹的非常清楚,是我對JavaScript的認識更加的深入。以前總覺得函數式編程很難理解,但是看了這本書以後我覺得對其有了一個新的認識。嚴格意義上說JavaScript並不僅僅是一門函數式程式設計語言,書中有一句話對它的特性做了一個精彩的描述:JavaScript的許多特性都借鑒自其他語言。文法借鑒自java,函數借鑒自Scheme,原型繼承借鑒自Self,而JavaScript的Regex特性則借鑒自Perl。
JavaScript的簡單類型有:數字、字串、布爾值、null值和undefined值。在JavaScript中,數組是對象,函數是對象,Regex是對象。可以使用對象字面量來建立一個新對象: var empty_object = { };
每個對象都串連到一個原型對象,並繼承其屬性。使用typeof可以確定屬性的類型。使用delete可以刪除對象的屬性。
函數也是對象,其原型對象為Function.prototype.函數有一個call屬性,當JavaScript調用函數時,可理解為調用該函數的call屬性。函數有四種調用模式:方法調用模式,函數調用模式,構造器調用模式和apply調用模式。這些模式主要是初始化關鍵字this存在差異,分別是:調用對象,全域對象,隱藏串連到該函數的prototype成員的新對象,apply方法的第一個參數。當函數被調用時,會得到一個arguments數組,可以通過它訪問傳遞給該函數的所有參數。一個函數總是會返回一個值,如果沒有制定傳回值,則返回underfined.
JavaScript中的數組其實是一種偽數組。她把數組的下標轉變成字串,用其作為屬性。可以通過數組字面量來聲明一個數組:var empty = [];數組第一個值將獲得屬性名稱0,第二個屬性名稱將獲得屬性名稱1,以此類推。
JavaScript中的Regex也是一個對象。Regex的分組有4中:捕獲型,使用圓括弧包括;非捕獲型,使用(?:首碼;向前正向匹配,使用(?=首碼;向前負向匹配,使用(?!首碼。