標籤:
js物件導向特徵介紹
javascript是一種面向(基於)對象的動態指令碼語言,是一種基於對象(Object)和事件驅動(EventDirven)並具有安全效能的指令碼語言。它具有物件導向語言所特有的各種特性,比如封裝、繼承及多態等。但對於大多數人說,我們只把javascript做為一個函數式語言,只把它用於一些簡單的前端資料輸入驗證以及實現一些簡單的頁面動態效果等,我們沒能完全把握動態語言的各種特性。在很多優秀的Ajax架構中,比如ExtJS、JQuery等,大量使用了javascript的物件導向特性,要使用ext技術,javascript的進階特性,物件導向語言特性是我們必需完全把握的。
明確概念:
javascript是一種基於對象(Object-based)的語言,你遇到的所有東西幾乎都是對象。特別說明:基於對象也好,物件導向也好實際上都是以對象的概念來編寫程式,從本質上並無區別,所有這兩個概念在我(韓順平)的課程中是一樣的。
因為javascript中沒有class(類),所以有人把類也稱為原型對象,因為這兩個概念從在編程中發揮的作用看都是一個意思,為了統一叫法,我這裡就統一叫類。
如下例:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //傳統方法比較麻煩 var cat1_name = "小白"; var cat1_age = 3; var cat1_color = "白色"; //...解決方案,把貓的屬性集中,建立一種新的資料類型(原型對象/類) //用物件導向的方法來解決上面的問題 //這裡就是一個Cat類 function Cat() { } //Cat();//如果你這樣用,就是一個函數 var cat1 = new Cat();//類 //這時cat1就是一個對象(執行個體) cat1.name = "小白"; cat1.age = 3; cat1.color = "白色"; //從上面的代碼我們可以看出 //1.js中的對象的屬性可以動態添加 //2.屬性沒有限制 window.alert(cat1.name+cat1.age+cat1.color+cat1.hobby); </script></head><body> </body></html>
這裡,注意幾點:
1、若直接這樣寫Cat();則就是一個函數調用。
2、js中的對象的屬性可以動態添加。
3、屬性沒有限制。
js面向(基於)對象
電腦語言的發展是向接近人的思維方式演變的,這是一個大趨勢。js引入的物件導向的思想。js不是純物件導向的,我們可以認為它是基於物件導向的。
組合語言[面向機器],C語言[面向過程],java語言[物件導向],js[支援物件導向]。
類和對象(執行個體)的關係:
注意:從貓類到貓對象執行個體,目前有幾種說法:1、建立一個對象執行個體;2、執行個體化一個對象;3、對象執行個體化...以後大家聽到這些說法,不要迷糊。
當然,上面的貓也可是魚、狗、人...js支援物件導向編程。
類(原型對象)和對象(執行個體)的區別和聯絡:
- 類(原型對象)是抽象的、概念的,代表一類事物,比如人、貓..
- 對象是具體的,實際,代表一個具體事物
- 類(原型對象)是對象執行個體的模板,對象執行個體是類的一個個體。
類(原型對象)--如何定義類(原型對象)和對象
- Factory 方法--使用new Object建立對象並添加相關屬性;
- 使用建構函式來定義類(原型對象);(目前我們先講解)
- 使用prototype
- 建構函式及原型混合方式
- 動態原型方式
類(原型對象)--如何定義類(原型對象)
基本文法:
function 類名/原型對象名(){}
對象的屬性,一般是基礎資料型別 (Elementary Data Type)(數,字串),也可是另外的對象。比如我們前面建立貓對象的age就是貓對象的屬性。
建立對象基本文法:
var 對象名=new 類名();
JavaScript基於對象編程