javascript
《JavaScript语言精髓与编程实践》读书笔记二
第3章非函數式語言特性
這一章首先介紹了語言的分類,命令式(結構化編程,面向對象編程),說明式(函數式等)。而這一章,主要介紹JS的非函數式特點。
在開始之前,首先介紹了由“結構化編程”向“面向對象編程”的演化趨勢。“結構化編程”根本上是面向機器世界的“存儲描述”因此抽象層次比較低,所以帶了以下幾點問題:
1. 結構體與實體直接相關,并且將這種相關性直接呈現在使用者的面前,因此開發人員必須面臨數據的具體含義與關系。
2. 結構體的抽象更面向于數據存儲形式的表達和算法實現方式,脫離了使用環境,算法的結構也缺乏通用性。
3. 僵化的類型與講話的邏輯并存,影響了業務邏輯的表達。
以上三點,在面向對象編程之中得到了良好的解決。
1. 面向對象提出通過更加細化的可見設定(public,protected,private等),更好地實現了數據的封裝以及數據域的管理。
2. 面向對象中的“繼承”解決了結構體的通用性問題。可以在不同的場合從共有的特點中繼承產生新的類別,從而更好地適應該場合。
3. “多態”被用來解決了“強類型”與業務邏輯表達之間的沖突。
此外,接口的提出(質保陸數據提的邏輯行為能力,而不暴露這種能力的實現方法和給予的數據特性),是一種更高層次的抽象。
之后就是重點講js的“結構化編程”和“面向對象編程”的具體內容。
首先說結構化的內容:
1. break/break<label>的區別:break 表示跳出當前循環,break<label>表示跳出當前label之間的語句。
變量的作用域:
1. JS中,表達式級別的變量都是匿名的。
2. 由于JS中不存在語句級別的變量作用域,因此for ( var i in obj)中的i會逸出到上一級,很有可能造成污染!
3. JS中變臉的作用域只有兩個局部變量(函數內部),全局變量。
4. 兩個不利于開發的事情:
1) 在全局范圍內任意聲明變量,尤其是在for語句中聲明變量
2) 在函數內部不適用var聲明變量,而是直接為變量賦值將會導致變量逸出到全局
5. JS中,語法解釋與執行分為兩個階段,變臉的顯示聲明(var)是在語法解釋階段處理的(在解釋階段該值為undefine)。
6. 變量的被創建的兩個方式:
1) 在語法分析時,發現了顯示聲明的變量var
2) 在代碼執行時,發現試圖為一個未被創建的變量賦值
7. 變量的兩種釋放方式:
1) 某個函數退出時,清除函數內的未被引用的變量
2) 全局代碼塊終結時,將清除全局的變量和數據的引用
8. 一個具名函數完全等價于將一個匿名函數賦值給一個已經聲明變量的表示符的。
var sb = function() {alert("haha"); }function sb2() {alert("haha"); }
這兩個函數除了在語法上面有些不同之外,調用方式等都是一樣的。
面向對象,內容比較多,下一篇再細說吧!
轉載于:https://www.cnblogs.com/qoshi/p/3457676.html
總結
以上是生活随笔為你收集整理的《JavaScript语言精髓与编程实践》读书笔记二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: typedefnbsp;struct与s
- 下一篇: gradle idea java ssm