錯(cuò)誤之處第焰,歡迎指正。
1. 面向?qū)ο蠛兔嫦蜻^(guò)程
以將大象放進(jìn)冰箱舉例:
- 面向過(guò)程:思考的切入點(diǎn)是功能的步驟咽袜。
function openDoor() {} //開(kāi)門(mén)
function elephantIn() {} //放進(jìn)冰箱
function closeDoor() {} //關(guān)門(mén)
- 面向?qū)ο螅核伎嫉那腥朦c(diǎn)是對(duì)象的劃分。
function Elephant() {} //構(gòu)造函數(shù)大象
function Fridge() {} //構(gòu)造函數(shù)冰箱
Fridge.prototype.openDoor = function () {} //開(kāi)冰箱門(mén)方法
Fridge.prototype.closeDoor = function () {} //關(guān)冰箱門(mén)方法
Fridge.prototype.in = function () {} //放入冰箱方法
const f = new Fridge(); //創(chuàng)建一個(gè)冰箱
f.openDoor(); //打開(kāi)該冰箱的門(mén)
const e = new Elephant(); //創(chuàng)建一個(gè)大象
f.in(e); //將大象放入冰箱
f.closeDoor(); //關(guān)閉冰箱門(mén)
從上面代碼可以看出枕稀,面向過(guò)程的寫(xiě)法更為簡(jiǎn)潔询刹,但是不利于后期的維護(hù)修改;相反萎坷,使用面向?qū)ο蟮姆椒ò剂恍枰リP(guān)注該對(duì)象上的方法,對(duì)于后期維護(hù)哆档,只需要在方法上做手腳蔽挠。沒(méi)有絕對(duì)的好與壞,需要依照需求來(lái)決定選取哪種方法瓜浸。
2. 構(gòu)造函數(shù)
- 傳統(tǒng)的構(gòu)造函數(shù)屬性和方法定義分離澳淑。
- 原型上的屬性會(huì)被枚舉。
- 構(gòu)造函數(shù)依然可以當(dāng)作普通函數(shù)使用插佛。
3. 類(lèi)
在面向?qū)ο笫骄幊讨懈苎玻褜?duì)象的所有成員定義稱(chēng)之為一個(gè)類(lèi)。
class Animal {
constructor(name, age){
this.name = name;
this.age = age;
}
print() {
console.log(this.name);
console.log(this.age);
}
}
-
class
不存在變量提升雇寇,存放于暫時(shí)性死區(qū)氢拥。 -
class
里的方法都不可枚舉蚌铜。 -
class
必須使用new
調(diào)用。 -
static
關(guān)鍵字嫩海;靜態(tài)成員冬殃,函數(shù)的本身是對(duì)象,函數(shù)上面本身的成員就是靜態(tài)成員叁怪,不能被實(shí)例訪問(wèn)到造壮,只能通過(guò)構(gòu)造函數(shù)本身使用。