js-一個(gè)Demo面向?qū)ο蟾呒?jí)形態(tài)

//語(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锉走,一起剝皮案震驚了整個(gè)濱河市滨彻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挪蹭,老刑警劉巖亭饵,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異梁厉,居然都是意外死亡辜羊,警方通過(guò)查閱死者的電腦和手機(jī)踏兜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)八秃,“玉大人碱妆,你說(shuō)我怎么就攤上這事∥羟” “怎么了疹尾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)骤肛。 經(jīng)常有香客問(wèn)我纳本,道長(zhǎng),這世上最難降的妖魔是什么腋颠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任繁成,我火速辦了婚禮,結(jié)果婚禮上淑玫,老公的妹妹穿的比我還像新娘巾腕。我一直安慰自己,他們只是感情好絮蒿,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布祠墅。 她就那樣靜靜地躺著,像睡著了一般歌径。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亲茅,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天回铛,我揣著相機(jī)與錄音,去河邊找鬼克锣。 笑死茵肃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袭祟。 我是一名探鬼主播验残,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巾乳!你這毒婦竟也來(lái)了您没?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胆绊,失蹤者是張志新(化名)和其女友劉穎氨鹏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體压状,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仆抵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镣丑。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舔糖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出莺匠,到底是詐尸還是另有隱情金吗,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布慨蛙,位于F島的核電站辽聊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏期贫。R本人自食惡果不足惜跟匆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望通砍。 院中可真熱鬧玛臂,春花似錦、人聲如沸封孙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)虎忌。三九已至泡徙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膜蠢,已是汗流浹背堪藐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挑围,地道東北人礁竞。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杉辙,于是被迫代替她去往敵國(guó)和親模捂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容