Class

錯(cuò)誤之處,歡迎指正。


1. 面向?qū)ο蠛兔嫦蜻^程

以將大象放進(jìn)冰箱舉例:

  1. 面向過程:思考的切入點(diǎn)是功能的步驟。
function openDoor() {}   //開門
function elephantIn() {} //放進(jìn)冰箱
function closeDoor() {}  //關(guān)門
  1. 面向?qū)ο螅核伎嫉那腥朦c(diǎn)是對(duì)象的劃分。
function Elephant() {}  //構(gòu)造函數(shù)大象
function Fridge() {}    //構(gòu)造函數(shù)冰箱
Fridge.prototype.openDoor = function () {}  //開冰箱門方法
Fridge.prototype.closeDoor = function () {} //關(guān)冰箱門方法
Fridge.prototype.in = function () {}        //放入冰箱方法
const f = new Fridge();  //創(chuàng)建一個(gè)冰箱
f.openDoor();  //打開該冰箱的門
const e = new Elephant();  //創(chuàng)建一個(gè)大象
f.in(e);  //將大象放入冰箱
f.closeDoor();  //關(guān)閉冰箱門

從上面代碼可以看出,面向過程的寫法更為簡潔,但是不利于后期的維護(hù)修改;相反,使用面向?qū)ο蟮姆椒?,只需要去關(guān)注該對(duì)象上的方法,對(duì)于后期維護(hù),只需要在方法上做手腳。沒有絕對(duì)的好與壞,需要依照需求來決定選取哪種方法。

2. 構(gòu)造函數(shù)

  1. 傳統(tǒng)的構(gòu)造函數(shù)屬性和方法定義分離。
  2. 原型上的屬性會(huì)被枚舉。
  3. 構(gòu)造函數(shù)依然可以當(dāng)作普通函數(shù)使用。

3. 類

在面向?qū)ο笫骄幊讨?,把?duì)象的所有成員定義稱之為一個(gè)類。

class Animal {
    constructor(name, age){
        this.name = name;
        this.age = age;
    }
    print() {
        console.log(this.name);
        console.log(this.age);
    }
} 
  1. class不存在變量提升,存放于暫時(shí)性死區(qū)。
  2. class里的方法都不可枚舉。
  3. class必須使用new調(diào)用。
  4. static關(guān)鍵字;靜態(tài)成員,函數(shù)的本身是對(duì)象,函數(shù)上面本身的成員就是靜態(tài)成員,不能被實(shí)例訪問到,只能通過構(gòu)造函數(shù)本身使用。
最后編輯于
?著作權(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)容

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