JavaScript也是一種面向對象的開發語言,但和C++,Java,C#所不一樣的是,它的對象不是基於類(Class),而是基於對象原型(ProtoType),所以對於來自C++、Java等背景的程序員,初次接觸到JavaScript的面向對象的開發時,開始會有些不適應。而JavaScript語言自己也很是靈活,實現面向對象的方法也不少,不一樣的框架使用的方法也不一樣。程序員
對於JavaScript的面向對象的方法和C++、Java面向對象的不一樣點。舉個簡單的類比,使用C++、Java來建房,是先有藍圖(Class),而後根據這個藍圖(Class)來建房(對象)。而JavaScript是直接建個房(Object)。若是要將個新房,就參考這個建好的房做爲原型(prototype),而後複製一個對象。框架
Kendo UI不單單提供了一些好看的UI組件,並且也提供一個JavaScript構建對象,實現繼承的方法,其形式接近於C++、Java的類繼承方法。函數
首先能夠建立一個新對象(注意JavaScript中沒有類的概念),能夠經過kendo.Class.extend 來定義。ui
1this |
|
上面代碼建立一個Person對象,但沒有定義Person對象任何屬性和方法。下面能夠爲Person定義一些屬性和方法(函數),能夠經過對象字面量的方法來定義,Javascript對象的屬性或方法都是以Key:value的形式來定義。也使用this來引用對象的方法或屬性。prototype
1code 2對象 3blog 4 5 6 7 8 9 10 11 |
|
也能夠爲對象添加一個構造函數,Kendo UI使用 init 來定義構造函數 ,這樣在建立新對象時,能夠經過構造函數來建立新的對象. 下面代碼從新定義Person對象,併爲其添加一個屬性isAPrettyCoolPerson:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
咱們使用這個對象,建立一個名爲John、Bristowe的Person,並把它的isAPrettyCoolPerson屬性設爲True。
如今咱們能夠建立Person對象的一個派生對象Parent、Parent對象繼承Person對象 ,而後咱們建立一個Dad對象。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
咱們再建立一個Child對象,繼承自Parent,要注意的是isCoolPerson 屬性。想一想它的值是真仍是假呢?
1 2 3 4 5 |
|
能夠看到me的isAPrettyCoolPerson的值爲false, 沒有由於myDad的isAPrettyCoolPerson爲True而變爲true, 這些由於Child繼承自Parent、Parent缺省的isAPrettyCoolPerson爲false, myDad修改的只是某個特定的實例的值,沒有修改做爲原型的對象(Parent)的屬性。
本文轉載自Kendo UI中文網