//語(yǔ)法甘露:
var object = //定義小寫(xiě)的object基本類(lèi),用于實(shí)現(xiàn)最基礎(chǔ)的方法等
{
isA: function(aType) //一個(gè)判斷類(lèi)與類(lèi)之間以及對(duì)象與類(lèi)之間關(guān)系的基礎(chǔ)方法
{
var self = this;
while(self)
{
if (self == aType)
return true;
self = self.Type;
};
return false;
}
};
function Class(aBaseClass, aClassDefine) //創(chuàng)建類(lèi)的函數(shù)拥诡,用于聲明類(lèi)及繼承關(guān)系
{
function class_() //創(chuàng)建類(lèi)的臨時(shí)函數(shù)殼
{
this.Type = aBaseClass; //我們給每一個(gè)類(lèi)約定一個(gè)Type屬性,引用其繼承的類(lèi)
for(var member in aClassDefine)
this[member] = aClassDefine[member]; //復(fù)制類(lèi)的全部定義到當(dāng)前創(chuàng)建的類(lèi)
};
class_.prototype = aBaseClass;
return new class_();
};
function New(aClass, aParams) //創(chuàng)建對(duì)象的函數(shù)力奋,用于任意類(lèi)的對(duì)象創(chuàng)建
{
function new_() //創(chuàng)建對(duì)象的臨時(shí)函數(shù)殼
{
this.Type = aClass; //我們也給每一個(gè)對(duì)象約定一個(gè)Type屬性,據(jù)此可以訪問(wèn)到對(duì)象所屬的類(lèi)
if (aClass.Create)
aClass.Create.apply(this, aParams); //我們約定所有類(lèi)的構(gòu)造函數(shù)都叫Create幽七,這和DELPHI比較相似
};
new_.prototype = aClass;
return new new_();
};
//語(yǔ)法甘露的應(yīng)用效果:
var Person = Class(object, //派生至object基本類(lèi)
{
Create: function(name, age)
{
this.name = name;
this.age = age;
},
SayHello: function()
{
alert("Hello, I'm " + this.name + ", " + this.age + " years old.");
}
});
var Employee = Class(Person, //派生至Person類(lèi)刊侯,是不是和一般對(duì)象語(yǔ)言很相似?
{
Create: function(name, age, salary)
{
Person.Create.call(this, name, age); //調(diào)用基類(lèi)的構(gòu)造函數(shù)
this.salary = salary;
},
ShowMeTheMoney: function()
{
alert(this.name + " $" + this.salary);
}
});
var BillGates = New(Person, ["Bill Gates", 53]);
var SteveJobs = New(Employee, ["Steve Jobs", 53, 1234]);
BillGates.SayHello();
SteveJobs.SayHello();
SteveJobs.ShowMeTheMoney();
var LittleBill = New(BillGates.Type, ["Little Bill", 6]); //根據(jù)BillGate的類(lèi)型創(chuàng)建LittleBill
LittleBill.SayHello();
alert(BillGates.isA(Person)); //true
alert(BillGates.isA(Employee)); //false
alert(SteveJobs.isA(Person)); //true
alert(Person.isA(Employee)); //false
alert(Employee.isA(Person)); //true
js-一個(gè)Demo面向?qū)ο蟾呒?jí)形態(tài)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)八秃,“玉大人碱妆,你說(shuō)我怎么就攤上這事∥羟” “怎么了疹尾?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)骤肛。 經(jīng)常有香客問(wèn)我纳本,道長(zhǎng),這世上最難降的妖魔是什么腋颠? 我笑而不...
- 正文 為了忘掉前任繁成,我火速辦了婚禮,結(jié)果婚禮上淑玫,老公的妹妹穿的比我還像新娘巾腕。我一直安慰自己,他們只是感情好絮蒿,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布祠墅。 她就那樣靜靜地躺著,像睡著了一般歌径。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亲茅,一...
- 那天回铛,我揣著相機(jī)與錄音,去河邊找鬼克锣。 笑死茵肃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袭祟。 我是一名探鬼主播验残,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巾乳!你這毒婦竟也來(lái)了您没?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胆绊,失蹤者是張志新(化名)和其女友劉穎氨鹏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體压状,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡仆抵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镣丑。...
- 正文 年R本政府宣布慨蛙,位于F島的核電站辽聊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏期贫。R本人自食惡果不足惜跟匆,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望通砍。 院中可真熱鬧玛臂,春花似錦、人聲如沸封孙。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)虎忌。三九已至泡徙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膜蠢,已是汗流浹背堪藐。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杉辙,于是被迫代替她去往敵國(guó)和親模捂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 1.單線程+事件隊(duì)列 事件隊(duì)列中的任務(wù)執(zhí)行的條件: 主線程已經(jīng)空閑 任務(wù)滿(mǎn)足觸發(fā)條件定時(shí)函數(shù)(延時(shí)時(shí)間已經(jīng)達(dá)到)事...
- 一、對(duì)象定義的三種方式 一品腹、對(duì)象的構(gòu)成并淋、 對(duì)象是由它本身和它的原型公共構(gòu)成的, 對(duì)象的原型是 proto (也是...
- 帶你了解面向?qū)ο蠛兔嫦蜻^(guò)程的區(qū)別 講面向?qū)ο笳渥颍碗x不開(kāi)講一講面向過(guò)程县耽。面向?qū)ο蠛兔嫦蜻^(guò)程是現(xiàn)在編程的主要句喷。一、面向...