文章目錄
JavaScript是基於對象編程OBP(Object based programming),JavaScript一切皆爲對象。
一、ECMAScript的四個階段
(1)第一階段–編輯
這部分還是比較值得注意一下。程序員要根據ECMAScript語言規範編寫出源程序,源程序要面向語言規範(語法)、編程思想、OOA/OOD、編譯器/解釋器和類庫編程。
合格的源程序(整體檢查通過):
- 符合版本語法
- 調用版本的API
- 符合版本的內置編譯規則
優秀的源程序(高質量運行):
- 編程思想
- 核心技術(技術知識和技術能力,將技術知識轉化爲技術能力)
- OOA/OOD
- 類庫/框架:可以提高設計效率,但是不會提高運行效率
(2)整體語法檢查
源程序-----整體語法檢查-----合格
這個主要涉及到編譯原理相關的知識。
(3)單步解釋執行過程
源程序-----> 解釋器單步解釋執行-----> 本地機器代碼----->瀏覽器(API)----->操作系統(專用API)----->本地CPU(指令語言)
------>執行。
解釋器解釋執行性能較低。
(4)單步解釋執行結果
理解程序運行的結果不應該從語法角度出發,而是應該從內存模型(執行模型、對象模型)角度出發,經過相關的數據處理,“顯示”我們相應的結果。
程序的執行無非就是:一是生成數據結構,二是訪問和操作數據結構中的數據。所以在程序設計時,一定要選擇數據結構。
數據結構:規定了數據的格式和這些格式的意義。
二、與基於對象程序設計(OBP) 有關的五個方面
語言規範、OOA/OOD、編程思想、API類庫、編譯執行以及內存邏輯模型
1.知識
源程序需要符合語言規範,語法是知識的一部分。
2.能力
- OOA分析能力
- OOD設計能力
- 方案的選擇能力
- 內容
3.技術(解釋執行以及內存邏輯模型)
技術(包括技術知識和技術能力),要將技術知識轉化爲技術能力。
-
OOP時, 選擇數據結構
1)效率
①設計效率
採用IDE集成開發環境提高錄入效率,採用類庫/框架提高設計效率,採用程序生成器提高程序生成效率。
②運行效率
1次 ×(數據結構的)生成效率 + n次 ×(操作數據的)運行效率
2)內存的大小
3)垃圾回收 -
建立內存中的數據結構並初始化
1) 棧中的數據結構(在棧中,系統生成, 由系統自動入棧/出棧)
2) 堆中的數據結構(類的數據結構和實例的數據結構) -
回收內存中的數據結構
1)棧中的數據,系統自動回收
2)託管堆中的託管數據,GC自動回收
3)非管堆中的非託管數據,編程回收。要編程回收的非託管數據主要指非託管的有限資源和非託管的大對象。否則,將引起資源泄露或內存泄露。 -
訪問數據結構中的數據
-
操作數據結構中的數據
-
內存中數據的安全
1)訪問權限:由訪問修飾符來完成。 Javascript不支持訪問權限修飾符。
2)防竊取:通過網絡安全措施
3)防偷窺:通過加密防止非法的偷窺。通過自定義數據結構(具有邏輯含義,防止理解)防止非法的偷窺。
4)防篡改: 通過數字簽名防止非法的篡改。
5)及時擦除: 將重要的垃圾數據從內存中及時擦除,而不要等待GC回收。
6)安全驗證- 數據類型的安全:隱式類型轉換、顯示類型轉換
- 計算表達式的安全(特別要注意計算表達式中的隱式類型轉換)
- 數組越界
- 函數的調用:
- 實參與形參在類型、數量、順序上是否匹配
- 在表達式中的函數是否有返回值
- 函數的返回值是否得到正確的使用
- 函數內部的異常處理
-
內存中數據的正確
- (邏輯)業務一致性:通過 try … catch … 解決
- (完整性)約束一致性:多數通過 get訪問器和set訪問器解決
- 實例對象的字段、以及字段之間的完整性
- 同類實例對象之間的完整性
- 不同類實例對象之間的完整性
- (多線程)併發一致性:併發衝突通過Lock解決
-
技術的選擇能力
-
程序的錯誤
運行時錯誤、邏輯錯誤往往是由於程序的bug引起的。- 語法錯誤
- 運行時錯誤
- 邏輯錯誤
-
異常處理:商業程序中必有異常處理。
-
可維護性
- 程序的可維護性:被調用函數的內部維護,儘量不要修改調用函數。
- 模塊的的可維護性:被調用模塊的內部維護,儘量不要修改調用模塊。
- 軟件系統的可維護性:被調用軟件層的內部維護,儘量不要修改調用軟件層。
- 數據結構的可維護性:數據結構的維護,儘量不要修改加工數據結構中數據的函數
-
日誌:操作日誌(安全)、錯誤日誌(維護)
4.編程思想
- what、why、how
- 如何編寫出高質量的、可維護、可擴展的程序。
- 類的設計原則
- 程序的設計模式
5.類庫
- 經驗豐富的程序員,將充分掌握和使用已存在的類庫(包括第三方類庫)。
- 可以提高程序設計效率,但是並不能提高運行的效率。
三、在HTML中使用JavaScript
HTML元素標籤,告知HTML解析器,生成該標籤類的一個實例。
轉義(字符)序列是給編譯器看的,在中間代碼中存放Unicode編碼。
HTML 轉義字符
諸如 “<” 之類的符號在HTML中擁有特殊的含義,所以在文本中使用它們。
爲了在 HTML 中顯示小於號 (<),我們需要使用字符實體
。
字符實體
字符實體有三部分:一個和號 (&),一個實體名稱或者 # 和一個實體編號,以及一個分號 ;。
要在 HTML 文檔中顯示小於號,我們需要這樣寫:<
或者 <
使用實體名稱而不是實體編號的好處在於,名稱相對來說更容易記憶。而這麼做的壞處是,並不是所有的瀏覽器都支持最新的實體名稱,然而幾乎所有的瀏覽器對實體編號的支持都很好。
注意:實體對大小寫敏感。
空格
空格是 HTML 中最普通的字符實體。通常情況下,HTML 會裁掉文檔中的空格。假如你在文檔中連續輸入 10 個空格,那麼 HTML 會去掉其中的9個。如果使用
,就可以在文檔中增加空格。
最常用的字符實體
其他一些常用的字符實體