JavaScript的面向?qū)ο蟮睦斫?/h2>

0.前言

以前和大家分享的都是JavaScript的基礎(chǔ),現(xiàn)在就和大家分享的是比較有難度的知識(shí)點(diǎn)——對(duì)象。注意啊各位廣大單身狗們,你們的福利來了,沒有對(duì)象的人,現(xiàn)在可以“new”出來一個(gè)了。嘻嘻(o)/~

1.面向?qū)ο缶幊趟枷牒喗?/h3>

不管是學(xué)習(xí)何種語言,都會(huì)學(xué)習(xí)到面向?qū)ο?,?dāng)然c語言是面向過程的,這無疑加大了程序員的工作量,而且不利于維護(hù)。但是面向?qū)ο螅瑒t顯得方便快捷,大大提高了程序員的工作效率。那么JavaScript的面向?qū)ο笥惺氯绾文??我們一起來了解一下?/p>

(1)什么是面向?qū)ο螅?/h5>

①把數(shù)據(jù)及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存的整體——對(duì)象。
②對(duì)同類對(duì)象抽象出其共性,形成類。
③類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行處理。
④類通過一個(gè)簡單的外部接口與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過消息進(jìn)行通信。
⑤程序流程由用戶在使用中決定。

(2)理解面向?qū)ο?/h5>

①面向?qū)ο笫窍鄬?duì)面向過程而言
②面向?qū)ο蠛兔嫦蜻^程都是一種思想
③面向過程
??強(qiáng)調(diào)的是功能行為
??關(guān)注的是解決問題需要哪些步驟
④面向?qū)ο?br> ??將功能封裝進(jìn)對(duì)象,強(qiáng)調(diào)具備了功能的對(duì)象
??關(guān)注的是解決問題需要哪些對(duì)象
⑤面向?qū)ο笫腔诿嫦蜻^程的。

(3)面向?qū)ο蟮乃拇筇匦?/h5>

多態(tài)性、 繼承性、 抽象性、 封裝性

(4)軟件編程的實(shí)質(zhì)

軟件編程就是將我們的思維轉(zhuǎn)變成計(jì)算機(jī)能夠識(shí)別語言的一個(gè)過程。
注意:面試的過程可能會(huì)被提到哦?。?!

案例如圖

捕獲.PNG

??從圖中我們可以看到,要實(shí)現(xiàn)把大象關(guān)冰箱用面向過程面向?qū)ο?/strong>兩種思想的事項(xiàng)方法。
面向過程:如果用面向過程的方法實(shí)現(xiàn)的話,就是“自己”,注意是“自己”去把冰箱門打開,然后“自己”把大象裝進(jìn)冰箱,最后還是“自己”把把冰箱門關(guān)上。從始至終都是自己一個(gè)完成的。
面向?qū)ο螅?/strong>就是“自己”去找一個(gè)人,注意是“去找一個(gè)人”讓它去把冰箱門打開、把大象裝進(jìn)冰箱、把冰箱門關(guān)上。從始至終都是“自己”去命令別人去做的,自己沒有動(dòng)手完成。至于這個(gè)人是怎么完成的我們不用去關(guān)心,只要你能找到能把大象關(guān)進(jìn)冰箱的這個(gè)人就行了。這就是面向?qū)ο蟮乃枷搿?br> 可以總結(jié)出:面向過程時(shí)“自己”是執(zhí)行者,面向?qū)ο髸r(shí)“自己”是指揮者。

(5)面向的對(duì)象的特點(diǎn)

①是一種符合人們思考習(xí)慣的思想
②可以將復(fù)雜的事情簡單化
③將程序員從執(zhí)行者轉(zhuǎn)換成了指揮者
④完成需求時(shí):
??先要去找具有所需的功能的對(duì)象來用。
??如果該對(duì)象不存在,那么創(chuàng)建一個(gè)具有所需功能的對(duì)象。

(6)JS中的面向?qū)ο螅ㄖ攸c(diǎn))

(1)Javascript是一種基于對(duì)象(object-based)的語言,你遇到的所有東西幾乎都是對(duì)象。但是,它又不是一種真正的面向?qū)ο缶幊蹋∣OP)語言,因?yàn)樗恼Z法中沒有class(類),注意是基于對(duì)象的語言,是一種弱類型語言
(2)對(duì)象:屬性與方法的集合

2.字面量方式創(chuàng)建對(duì)象并訪問屬性和方法

屬性:是一個(gè)字符串。
方法:是一個(gè)功能或者方法或者函數(shù)。
(1)字面量法創(chuàng)建對(duì)象,空對(duì)象

var obj1 = {};
console.log(obj1);
console.log(typeof obj1);

結(jié)果:

捕獲.PNG

(2)字面量法創(chuàng)建對(duì)象,非空對(duì)象

var girlFriend = {
            //添加屬性
            //冒號(hào)左側(cè)是屬性名   冒號(hào)右側(cè)是對(duì)應(yīng)的屬性值
            name: "鐵錘妹妹",
            // "name": "二雷",
            // 'name': "二雷",
            // 以上寫法都是可以的,一般我們不建議給屬性名加引號(hào)。但是以下幾種情況必須加引號(hào)
            // 1、當(dāng)屬性名是JS中的保留字時(shí)必須加引號(hào)
            // 2、當(dāng)屬性名中存在空格或者其他特殊字符串時(shí)必須加引號(hào)
            // 3、當(dāng)屬性民以數(shù)字開頭時(shí)必須加引號(hào)
            
            // "good man": 100,
            // "%^&!": "no zuo no die",
            // "1abc": "sha",
            
            height: 165,
            weight:55,
            age: 25,



            //行為
            eat: function(){
                console.log("吃");
            },

            run: function(){
                console.log("跑");
            },


            //帶參數(shù)行為
            sleep: function(hours) {
                console.log("睡" + hours + "個(gè)小時(shí)");
            },

            //
            say: function(){
                console.log("身高:" + girlFriend.height);
                //在對(duì)象內(nèi)部,this代表當(dāng)前對(duì)象本身
                console.log("年齡:" + this.age);
            },
        };

結(jié)果:

捕獲.PNG
(3)訪問對(duì)象的屬性(屬性值)

公式一:對(duì)象名["屬性名"]

console.log(girlFriend["name"]);

結(jié)果:

捕獲.PNG

公式二:對(duì)象名 . 屬性名,也叫點(diǎn)語法

console.log(girlFriend.height);

結(jié)果:

捕獲.PNG
(4)修改屬性值
girlFriend.weight = 180;
console.log(girlFriend);

結(jié)果:

捕獲.PNG
(5)訪問功能(函數(shù))

公式一:對(duì)象名["功能屬性名"](參數(shù)列表)

girlFriend["eat"]();

公式二:對(duì)象名 . 功能屬性名(參數(shù)列表)

girlFriend.run();
girlFriend.sleep(10);
girlFriend.say();
(6)動(dòng)態(tài)給對(duì)象添加屬性

注意:后期添加的屬性,在這之前使用該對(duì)象也會(huì)有當(dāng)前添加的屬性

girlFriend.faceValue = 100;
console.log(girlFriend);

結(jié)果:


捕獲.PNG
(7)動(dòng)態(tài)給對(duì)象添加方法
girlFriend.play = function(){
    console.log("玩");
};
girlFriend.play();
(8)動(dòng)態(tài)刪除對(duì)象屬性
delete girlFriend.weight;
console.log(girlFriend.weight);

結(jié)果:

捕獲.PNG
(9)動(dòng)態(tài)刪除對(duì)象行為
delete girlFriend.eat;
girlFriend.eat();

結(jié)果:


捕獲.PNG

因?yàn)閯h除了eat()函數(shù),所以才會(huì)報(bào)錯(cuò),提示eat不是一個(gè)函數(shù)。

3.總結(jié)

今天就先介紹這一種方法吧,累死我了,本人已“事”,有事燒紙?。。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,446評(píng)論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評(píng)論 18 399
  • Baloney 胡說 例句: Let me say it again: that's nothing but ba...
    周艷杰閱讀 192評(píng)論 0 0
  • 王錚剛回到家中還沒來得及脫下外套,老爺子便高興地說,“錚兒,你猜我今天見到誰了?”?!罢l?不會(huì)是劉阿姨吧?”王錚邊...
    靜夜聽雨_787f閱讀 989評(píng)論 3 22
  • 他呀就像買張票立馬回去 ,煩透了周邊的一切,但是....
    Elainemi閱讀 179評(píng)論 0 0

友情鏈接更多精彩內(nèi)容