javascript的對象和函數javascript
在面向對象對象語言中,類與對象的關係很是明確,一個對象必須是一個類的實例。
而javascript中卻沒有類的概念,沒有了類也就沒有繼承、多態、重載這些東西了。在一些javascript框架中有關於一些類的定義,這些東西只是經過javascript的特性來模擬面嚮對象語言,而並不是是javascript的本質。
javascript對象,最經常使用的寫法:java
這就是一個javascript對象,也就是第一節(javascript數據類型)最後所說的複雜數據類型。
定義一個javascript對象還有其餘方式,後面再說。
javascript對象,並非定義完了就不能改變的,隨着業務流程的須要你能夠在這個對象上添加,刪除你須要的屬性(變量,方法);
下面是一個例子,用來講明對象的變化:
1,一個消息對象,一開始我不知道里面須要什麼東西,因此我定義一個對象裏面沒有東西json
2,領導說,這個消息裏須要有個Id,那麼就能夠爲這個消息添加一個屬性id框架
這時notification有了id這個屬性。若是在面嚮對象語言中,你知道加這個屬性有多麻煩!
3, 領導又說,這個消息裏須要有個title,那麼就能夠爲這個消息添加一個屬性title函數
4,領導又說了,這個消息可以有個方法,打印出這個notification的title,那麼就能夠爲這個notification添加一個methodthis
好了,以前定義的那個空的notification對象如今已經有了三個屬性。
5,領導某天有心血來潮說,他以爲不須要那個打印方法了,須要去掉。經過下面的方式就能夠完成prototype
如今notification這個對象就剩下兩個屬性了:id 和 title。
6,領導又說,id和title也不想要了,相似的: code
如今notification對象已經恢復到剛開始的什麼也沒有的樣子了。
從上面這個流程你能夠看出,一個javascript對象,你能夠隨時對它的屬性進行修改,這個對象是可以時時變化的,很是的靈活。對象
函數最基本的特性是可以被調用。
在javascript中聲明函數有多種方式:
function func1(…){…}//經常使用
var func2=function(…){…};//經常使用
var func3=function func4(…){…};//不經常使用
var func5=new Function();//不經常使用
經常使用的兩種分別爲定義式和變量式
定義式: 繼承
變量式:
這兩種方式都是建立了一個javascript內置對象Function的一個實例,即一個對象(注意這個地方,函數是一個對象)。
能夠這麼理解函數是一個能夠被調用執行的對象,既然是對象,它就擁有對象所具備的一切特性。
須要注意的一點,javascript引擎對兩種聲明的分析和執行是不一樣的:
JavaScript執行引擎並不是一行一行地分析和執行程序,而是一段一段地分析執行的。
什麼叫一段一段:
<script>第一段</script> <script>第二段</script>
2,經過方法(或者說函數)構造對象: