讀此書之前,感謝淘寶技術團隊對此javascript核心的翻譯,感謝弗拉納根寫出此書。感謝你們無私的分享,僅以此筆記獻給你們的辛勤付出。
一:javascript語言核心
本章之後,我們將主要關注javascript的基礎知識。第二章我們講解javascript的註釋,分號和unicode字符集;第三章會更有意思,主要講解javascript的變數和賦值
這裡有一些實例程式碼說明前兩章的重點內容。
在javascript中,最重要的類型就是對象和數組,第六章介紹對象,第7章介紹數組。物件和陣列在 javascript是如此重要。以至於在本書中到處都能看到他們的身影。
上面程式碼中透過方括號定義數組元素和透過花括號定義物件屬性名和屬性值之間的映射關係的語法陳偉初始化表達式(initalizer expression),第四章有專門介紹.表達式是javascript中的一個短語,這個短語可以透過運算得出一個值,透過","和"[]"來引用物件屬性或陣列元素的值構成一個表達式。
javascript中最常見的表達式寫法是像下面 程式碼這樣的運算子(oprartor)
如果javascript中的「片語」是表達式話,那麼整個句子就稱作語句(statement),第五章會詳細講解。
在上述程式碼中,以分號結束的行均是一條語句,粗略的講,表達式僅僅計算出一個值(或者它包含的值我們並不關心)但他們改變程式運行狀態。在上文中,已經看過變數宣告語句和賦值語句。另一類語句是「控制結構」(control structure),例如條件判斷和循環,在介紹完函數後,我們給出相關範例程式碼。
函數是帶有名稱和參數的javascript程式碼段,可一次定義多次使用。第8章會正式詳細地講解函數。就像物件和陣列一樣,本書很多地方提到函數,這裡給一些簡單的範例程式碼。
現在,給一些控制語句的例子,這裡的範例函數體內包含了最常見的javascript的控制語句
javascript是一種物件導向的程式語言,但和傳統的頁面物件有很大的區別,第9章將詳細講解的javascript的物件導向,這章會有大量的範例程式碼,是本書最長的一章。
這裡有一個簡單的範例,這段程式碼展示如何在javascript中定義一個類別來表示2D面的幾何中的點。這個類別實例化的物件擁有一個名為r()的方法,用來計算改點到原點的距離。
第9章是第一部分的精華所在,後續的各章做了零星的延伸,將帶領我們走向對javascript探索的尾聲。
第十章主要講正規表示式進行的文字比對模式。
第11章主要護額石膏javascript的語言核心的子集和超集。
在進入客戶端的javascript的內容之前,第12章我們只要介紹兩種在web之外的javascript運行環境。
2.客戶端javascript
javascript語言核心部分的內容知識點交叉引用比較多,且知識層次感不分明。在客戶端javascript的內容編排有了很大的改變。依照本章學習,完全可以在web瀏覽器使用javascript。 (但如果想透過閱讀本書來學習javascript的話,不能只將眼光放在第二部分) 第13章是第二部分的第一章,該章介紹如何讓javascript在web瀏覽器中運作起來。 第14章講解到web瀏覽器腳本技術,並涵蓋客戶端javascirpt的一席重要的全域函數。
例如:
第十五章會講述javascript如何操縱html樣式定義內容的展示方式.第十五章的內容將更加務實,透過腳本操作html文檔內容,它將展示如何選取特定的網頁元素,如何為html元素設定屬性,如果修改元素的內容,以及如何為文件新增新的節點
以下實例函數展示瞭如果尋找和修改基本的文章內容
//如果元素不存在,則建立一個
if (!log) {
log = document.createElement("div"); //建立一個新的div元素
log.id = "debuglog"; //為各方元素的id賦值
log.innerHTML = "
中,並加入到log中<br> var pre = document.createElement("pre"); //建立pre元素<br> var text = document.createElement(msg); //將msg包含在一個文字節點上<br> pre.appendChild(text); //文字新增至pre<br> log.appendChild(pre); //pre新增至log<br> }<br>
在第十六章會講到如何使用javascript操作元素,這通常會使用到元素的style和class屬性
function highlight(e) { //以設定為以高亮顯示e
if (!e.className) e.className = "highcss";
else
e.className = "highcss";
}
可以透過javascript來控制元素的內容和css樣式,同樣也可以透過事件處理程序(event handler)來定義文件行為,事件處理辰星是一個在瀏覽器中心註冊的javascript函數,當特定的事件發生時瀏覽器便可以呼叫這個函數。
通常我們關注的事件類型是滑鼠點擊和鍵盤按鍵事件(智慧型手機為各種觸碰事件)。或者說當瀏覽器完成文件的加載,當使用者改變視窗的大小或當使用者向表單中輸入資料時便會觸發一個人事件。
第17章會詳細描述如何定義,註冊時間處理程序,以及在事件發生時瀏覽器是如何呼叫他們的。
自訂事件處理程序最簡單的方法,給html的以on為前綴的屬性綁定一個回調,當寫一些簡單的程式測試時,最實用的方法就是給「onclick」處理程序綁定回調。假設以上將上文的debug()和hide()這個函數保存到debug.js和hide.js的文件中,那麼就可以簡單些一個html測試文件,來給onclick的屬性指定一個事件處理程序。如下