在學習js面向對象程式設計之前,首先需要知道什麼是面向對象。面向對象語言都有類的概念,通過它可以建立具有相同屬性和方法的對象。但js并沒有類的概念,是以js中的對象和其他語言的對象有所不同。
js對象可以定義為:”無需屬性的集合,其屬性可以是基本值、對象和函數。每個對象都是基于一個引用類型建立的。
js建立對象有以下兩種方法:
這裡暫停一下,因為構造函數模式比較重要,這裡解釋一下:這裡實際上是經曆了以下4個步驟:
(1)建立一個對象;
(2)将構造函數作用域賦給這個對象(是以this将指向這個新建立的對象)
(3)執行裡面的代碼,為新對象添加屬性;
(4)傳回新對象;
上面建立的p1和p2都有一個constructor的屬性,它指向person。并且p1和p2即使person的執行個體,同時也是object的執行個體,因為所有對象都繼承自object。
缺陷:每個方法都要在執行個體上重新建立一遍,js中的函數是對象,是以可以将函數轉移到構造函數的外部:
我們建立的函數都有一個prototype屬性,它是一個指向一個對象的指針。
6.抽象函數: