天天看點

《JavaScript語言精粹》讀書筆記

《JavaScript語言精粹》這本書句句是精華。如果你想隻讀一本書了解JavaScript,這本是你的不二選擇。

這麼薄的一本書講JavaScript的特點介紹的非常清楚,是我對JavaScript的認識更加的深入。以前總覺得函數式程式設計很難了解,但是看了這本書以後我覺得對其有了一個新的認識。嚴格意義上說JavaScript并不僅僅是一門函數式程式設計語言,書中有一句話對它的特性做了一個精彩的描述:JavaScript的許多特性都借鑒自其他語言。文法借鑒自java,函數借鑒自Scheme,原型繼承借鑒自Self,而JavaScript的正規表達式特性則借鑒自Perl。

JavaScript的簡單類型有:數字、字元串、布爾值、null值和undefined值。在JavaScript中,數組是對象,函數是對象,正規表達式是對象。可以使用對象字面量來建立一個新對象: var empty_object = { };

每個對象都連接配接到一個原型對象,并繼承其屬性。使用typeof可以确定屬性的類型。使用delete可以删除對象的屬性。

函數也是對象,其原型對象為Function.prototype.函數有一個call屬性,當JavaScript調用函數時,可了解為調用該函數的call屬性。函數有四種調用模式:方法調用模式,函數調用模式,構造器調用模式和apply調用模式。這些模式主要是初始化關鍵字this存在差異,分别是:調用對象,全局對象,隐藏連接配接到該函數的prototype成員的新對象,apply方法的第一個參數。當函數被調用時,會得到一個arguments數組,可以通過它通路傳遞給該函數的所有參數。一個函數總是會傳回一個值,如果沒有制定傳回值,則傳回underfined.

JavaScript中的數組其實是一種僞數組。她把數組的下标轉變成字元串,用其作為屬性。可以通過數組字面量來聲明一個數組:var empty = [];數組第一個值将獲得屬性名0,第二個屬性名将獲得屬性名1,以此類推。

JavaScript中的正規表達式也是一個對象。正規表達式的分組有4中:捕獲型,使用圓括号包括;非捕獲型,使用(?:字首;向前正向比對,使用(?=字首;向前負向比對,使用(?!字首。  

讀完這本書,徹底颠覆了我對JavaScript的了解。最近在翻譯《Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript (Effective Software Development Series)》這本書,正得益于我從《JavaScript語言精粹》掌握了JavaScript的核心。