js中的面向?qū)ο?/h1>

舉兩個(gè)例子:
1跪楞,把大象裝進(jìn)冰箱:
面向過程:1,打開冰箱門,2侣灶,把大象放進(jìn)去甸祭;3,關(guān)上冰箱門
面向?qū)ο螅?褥影,先創(chuàng)建一個(gè)冰箱的對象池户,還有大象的對象;
2凡怎,給冰箱對象一個(gè)開開冰箱門校焦,關(guān)上冰箱門的功能;給大象一個(gè)走進(jìn)冰箱的功能
3栅贴,調(diào)用大象的走進(jìn)冰箱的方法斟湃,調(diào)用冰箱的關(guān)上冰箱門的方法
2,五子棋游戲
面向過程:1檐薯,黑子先走凝赛,判斷黑子有沒有連城一條線
2,白字再走坛缕,判斷白字有沒有連城一條線
面向?qū)ο螅合葎?chuàng)建出來黑子墓猎,白字的對象,都有落旗子的功能赚楚,再創(chuàng)建出來游戲規(guī)則對象毙沾,判斷哪一方贏
調(diào)用黑子的落旗子方法,調(diào)用游戲規(guī)則對象判斷黑子是否贏
調(diào)用白字的羅旗子方法宠页,調(diào)用游戲規(guī)則對象判斷白字是否贏

對象里的幾個(gè)重要的概念:

對象(實(shí)例):屬性(對象的特征)左胞,方法(對象的行為)
封裝
繼承
多態(tài)
js是基于對象的語言寇仓,而不是面向?qū)ο蟮恼Z言,當(dāng)需要使用js代碼實(shí)現(xiàn)面向?qū)ο缶幊趟枷霑r(shí)烤宙,就使用js代碼來模擬面向?qū)ο笳Z言的各種概念遍烦,特征
類(class)是一堆具有相同屬性、方法的數(shù)據(jù)類型的集合躺枕,對象是把類(class)的屬性和方法具體化后的一種數(shù)據(jù)類型服猪。
在面向?qū)ο笳Z言中,必須通過類來創(chuàng)建對象拐云,而js中沒有類的概念罢猪,所以就是用“構(gòu)造函數(shù)”來模擬(充當(dāng)、代替)面相對象語言中的"類"叉瘩,通過構(gòu)造函數(shù)來創(chuàng)建對象膳帕。
// 屬性和方法
// 屬性就是屬于某個(gè)對象的變量,該變量只能通過他所歸屬的對象調(diào)用房揭、訪問备闲,其他對象無法獲取到;
// 方法就是屬于某個(gè)對象的函數(shù)捅暴,該函數(shù)只能通過他所歸屬的對象調(diào)用恬砂、訪問,其他對象無法獲取到蓬痒。

在js中泻骤,因?yàn)橹苯油ㄟ^"var”定義的變量、函數(shù)都默認(rèn)屬于window對象梧奢,所以js就有了"基于對象"這個(gè)語言名稱狱掂。
繼承:類與類之間一旦聲明了繼承關(guān)系,如:A繼承自B(A是通過B創(chuàng)建出來的子類亲轨,B是父類趋惨,A是子類),B類中擁有的屬性惦蚊、方法器虾,在A類中不用再次創(chuàng)建,因?yàn)樽宇惪梢垣@取到父類的屬性和方法蹦锋,這種關(guān)系就是繼承兆沙。
多態(tài):各個(gè)對象在獲取到創(chuàng)建這個(gè)對象的類中所有的方法時(shí),方法是同一個(gè)方法莉掂,但是因?yàn)槭怯刹煌瑢ο笳{(diào)用的葛圃,所以這些方法執(zhí)行結(jié)果可能不同(同一個(gè)類創(chuàng)建的不同對象,具備同樣的方法,但是因?yàn)閷ο蟛煌庹苑椒▓?zhí)行的結(jié)果也可能不同)曲楚,這種行為就是多態(tài)。

js創(chuàng)建對象的方法
1褥符,直接創(chuàng)建:
var person = {
name:'張三'洞渤,
age:34,
sayHi:function(){
alert('hello')
}
}
2,使用工廠方法創(chuàng)建對象
function createPerson(name,age){
//創(chuàng)建一個(gè)空對象
var per = new Object();
// var per = {};
per.name = name;
per.age = age;
per.sayHi = function(){
alert('hello')
}
return per;
}
//調(diào)用工廠函數(shù)属瓣,獲取新創(chuàng)建的對象
var person1 = createPerson('zhang',34)
3,構(gòu)造函數(shù)創(chuàng)建對象(都要用this)
function CreatePerson(name, age) {
//此this是指的window
this.name = name;
this.age = age;
this.sayHi = function () {
alert('hello');
}

        }
     var per1 = new CreatePerson('張三', 18);
        console.log(per1);
        console.log(per1 instanceof CreatePerson);
        var per2 = new CreatePerson('李四', '22');
        console.log(per2);

4,通過原型創(chuàng)建對象
// 通過原型創(chuàng)建對象
// 優(yōu)勢:可以把對象公有的數(shù)據(jù)統(tǒng)一托管在原型中讯柔,以達(dá)到節(jié)約內(nèi)存的目的
function CreateAnimal(name, age) {
// 把所有對象公有的相同屬性和所有方法全部存在原型中抡蛙,以達(dá)到節(jié)約內(nèi)存的目的
// 把各自對象值不同的屬性,放在實(shí)例中魂迄,有對象自己開辟內(nèi)存空間粗截,維護(hù)自己獨(dú)有的值
this.name = name;
this.age = age;
CreateAnimal.prototype.sayHi = function () {
alert('汪汪');
}
}

        var dog1 = new CreateAnimal('阿黃', 4);
        console.log(dog1.name);
        console.log(dog1.age);

        var dog2 = new CreateAnimal('旺財(cái)', 8);
        console.log(dog2.name);
        console.log(dog2.age);

        console.log(dog1.name);
        console.log(dog1.age); 

5,// 動(dòng)態(tài)原型創(chuàng)建對象
// 如果原型中已經(jīng)存在相關(guān)的屬性和方法捣炬,則構(gòu)造函數(shù)中熊昌,添加原型屬性、方法的代碼不再執(zhí)行湿酸。
function CreateCat(name, age) {
this.name = name;
this.age = age;
// CreateCat.prototype.sayHi
//
if (typeof(CreateCat.prototype.sayHi) != 'function') {
CreateCat.prototype.sayHi = function () {
alert('喵喵,我的名字是:' + this.name);
}
}
}

        var cat1 = new CreateCat('咪咪', 18);
        var cat2 = new CreateCat('哈哈哈哈', 2);

        cat1.sayHi();
        cat2.sayHi();

  訪問對象的屬性
    function CreatePerson(name,age) {
            this.name = name;
            this.age = age;
            this.sayHi = function () {
                alert('hello');
            }
        }

        var person1 = new CreatePerson('張三', 18);

        // 通過點(diǎn)語法的方式訪問:對象名.屬性名
        console.log(person1.name);
        // 通過下標(biāo)的方式訪問屬性:對象名['字符串類型的屬性名']
        var name = 'name';
        console.log(person1[name]);

        // 修改屬性的值:對象名.屬性名=賦新值
        person1.name = '李四';

        person1.gender = '男';
        console.log(person1);

        // 刪除對象下的屬性:delete
        delete person1.gender;
        console.log(person1);


        var arr = [12, 23, 34, 45, 56, 67, 78, 89, 90];

        // 使用快速遍歷婿屹,來遍歷對象屬性
        for (var item in person1) {
            // 通過條件,過濾對象中的方法推溃,只遍歷出屬性
            if (typeof(person1[item]) != 'function') {
                console.log(person1[item]);
            }
        }
// 定義一個(gè)構(gòu)造函數(shù)昂利,通過該函數(shù)可以創(chuàng)建一個(gè)能計(jì)算平方的對象
        function PingFang(num) {
            this.num = num;
            this.pingFang = function () {
                return this.num*this.num;
            }
        }

        var obj = new PingFang(3);
        var result = obj.pingFang()
        console.log(result);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市铁坎,隨后出現(xiàn)的幾起案子蜂奸,更是在濱河造成了極大的恐慌,老刑警劉巖硬萍,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扩所,死亡現(xiàn)場離奇詭異,居然都是意外死亡朴乖,警方通過查閱死者的電腦和手機(jī)祖屏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寒砖,“玉大人赐劣,你說我怎么就攤上這事×ǘ迹” “怎么了魁兼?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我咐汞,道長盖呼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任化撕,我火速辦了婚禮几晤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘植阴。我一直安慰自己蟹瘾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布掠手。 她就那樣靜靜地躺著憾朴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喷鸽。 梳的紋絲不亂的頭發(fā)上众雷,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音做祝,去河邊找鬼砾省。 笑死,一個(gè)胖子當(dāng)著我的面吹牛混槐,可吹牛的內(nèi)容都是我干的编兄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼声登,長吁一口氣:“原來是場噩夢啊……” “哼翻诉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捌刮,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤碰煌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绅作,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦圾,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年俄认,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了个少。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眯杏,死狀恐怖夜焦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岂贩,我是刑警寧澤茫经,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響卸伞,放射性物質(zhì)發(fā)生泄漏抹镊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一荤傲、第九天 我趴在偏房一處隱蔽的房頂上張望垮耳。 院中可真熱鬧,春花似錦遂黍、人聲如沸终佛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽查蓉。三九已至,卻和暖如春榜贴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妹田。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工唬党, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鬼佣。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓驶拱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晶衷。 傳聞我的和親對象是個(gè)殘疾皇子蓝纲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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