轉(zhuǎn)帖|使用教程|編輯:龔雪|2016-10-19 09:19:14.000|閱讀 948 次
概述:Kendo UI不僅僅提供了一些好看的UI組件,而且也提供一個JavaScript構(gòu)建對象,實現(xiàn)繼承的方法,其形式接近于C++、Java的類繼承方法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
JavaScript也是一種面向?qū)ο蟮拈_發(fā)語言,但和C++,Java,C#所不同的是,它的對象不是基于類(Class),而是基于對象原型(ProtoType),因此對于來自C++、Java等背景的程序員,初次接觸到JavaScript的面向?qū)ο蟮拈_發(fā)時,開始會有些不適應(yīng)。而JavaScript語言本身也非常靈活,實現(xiàn)面向?qū)ο蟮姆椒ㄒ埠芏啵煌目蚣苁褂玫姆椒ㄒ膊煌?/p>
對于JavaScript的面向?qū)ο蟮姆椒ê虲++、Java面向?qū)ο蟮牟煌c。舉個簡單的類比,使用C++、Java來建房,是先有藍圖(Class),然后根據(jù)這個藍圖(Class)來建房(對象)。而JavaScript是直接建個房(Object)。如果要將個新房,就參考這個建好的房作為原型(prototype),然后復制一個對象。
Kendo UI不僅僅提供了一些好看的UI組件,而且也提供一個JavaScript構(gòu)建對象,實現(xiàn)繼承的方法,其形式接近于C++、Java的類繼承方法。
首先可以創(chuàng)建一個新對象(注意JavaScript中沒有類的概念),可以通過kendo.Class.extend 來定義。
var person = kendo.Class.extend({});
上面代碼創(chuàng)建一個Person對象,但沒有定義Person對象任何屬性和方法。下面可以為Person定義一些屬性和方法(函數(shù)),可以通過對象字面量的方法來定義,Javascript對象的屬性或方法都是以Key:value的形式來定義。也使用this來引用對象的方法或?qū)傩浴?/p>
var Person = kendo.Class.extend({ firstName: ‘Not Set’, lastName: ‘Not Set’, isAPrettyCoolPerson: false, sayHello: function() { alert(“Hello! I’m “ + this.firstName + ” “ + this.lastName); } }); var person = new Person(); person.sayHello();
也可以為對象添加一個構(gòu)造函數(shù),Kendo UI使用 init 來定義構(gòu)造函數(shù) ,這樣在創(chuàng)建新對象時,可以通過構(gòu)造函數(shù)來創(chuàng)建新的對象. 下面代碼重新定義Person對象,并為其添加一個屬性isAPrettyCoolPerson:
var Person = kendo.Class.extend({ firstName: ‘Not Set’, lastName: ‘Not Set’, isAPrettyCoolPerson: false, init: function (firstName, lastName) { if (firstName) this.firstName = firstName; if (lastName) this.lastName = lastName; }, sayHello: function () { alert(“Hello! I’m “ + this.firstName + ” “ + this.lastName); } }); var person = new Person(“John”, “Bristowe”); person.isAPrettyCoolPerson = true; person.sayHello();
我們使用這個對象,創(chuàng)建一個名為John、Bristowe的Person,并把它的isAPrettyCoolPerson屬性設(shè)為True。
現(xiàn)在我們可以創(chuàng)建Person對象的一個派生對象Parent、Parent對象繼承Person對象 ,然后我們創(chuàng)建一個Dad對象。
var person = new Person(“John”, “Bristowe”); person.isAPrettyCoolPerson = true; var Parent = Person.extend({ firstName: ‘Mark’, lastName: ‘Holland’ }); var myDad = new Parent(); myDad.isAPrettyCoolPerson = true; myDad.sayHello(); alert(myDad.isAPrettyCoolPerson);
我們再創(chuàng)建一個Child對象,繼承自Parent,要注意的是isCoolPerson 屬性。想想它的值是真還是假呢?
var Child = Parent.extend({}); var me = new Child(); me.firstName = “Burke”; me.sayHello(); alert(me.isAPrettyCoolPerson);
可以看到me的isAPrettyCoolPerson的值為false, 沒有因為myDad的isAPrettyCoolPerson為True而變?yōu)閠rue, 這些因為Child繼承自Parent、Parent缺省的isAPrettyCoolPerson為false, myDad修改的只是某個特定的實例的值,沒有修改作為原型的對象(Parent)的屬性。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)