溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript對(duì)象重構(gòu)方法是什么

發(fā)布時(shí)間:2022-01-26 15:16:11 來源:億速云 閱讀:147 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“JavaScript對(duì)象重構(gòu)方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JavaScript對(duì)象重構(gòu)方法是什么”吧!

JavaScript對(duì)象重構(gòu)方法是什么

用常量來表示數(shù)字

如果我們有很多重復(fù)的值且表示一樣的含義,但沒有明確地說明,那么我們應(yīng)該將它們轉(zhuǎn)換為常量,以便每個(gè)人都知道它們的含義,并且如果需要更改,我們只需更改一個(gè)地方就行了。

例如我們可能會(huì)這樣寫代碼:

const getWeight = (mass) => mass * 9.81
const potentialEnergy = (mass, height) => mass * height * 9.81

對(duì)于含義相同的數(shù)學(xué)我可以用常量表示:

const GRAVITATIONAL_CONSTANT = 9.81;
const getWeight = (mass) => mass * GRAVITATIONAL_CONSTANT
const potentialEnergy = (mass, height) => mass * height * GRAVITATIONAL_CONSTANT

現(xiàn)在我們知道9.81實(shí)際上意味著GRAVITATIONAL_CONSTANT,我們不必重復(fù)自己。

上面我們用常量 GRAVITATIONAL_CONSTANT 表示 9.81 ,這樣別人一看就知道它表示是萬有引力常數(shù)常量。

封裝字段

我們可以將getter和setter添加到類的字段中,這樣就不心直接對(duì)類的字段進(jìn)行操作。

例如我們可能會(huì)這樣寫代碼:

class Person {
 constructor(name) {
   this.name = name;
 }
}

如果要控制如何設(shè)置值,可以這樣重構(gòu):

class Person {
 constructor(name) {
   this._name = name
 }

 get name() {
   return this._name
 }

 set name() {
   this._name = name
 }
}

這樣,我們就可以控制如何設(shè)置值,因?yàn)槲覀兛梢栽趕etter中放入代碼來設(shè)置名稱。我們還可以控制誰能獲得名稱,因?yàn)樗窃趃etter中返回的。

用數(shù)組類代替字段

我們可以將字段替換為其自己的數(shù)據(jù)類,這樣在記錄數(shù)據(jù)中會(huì)有更強(qiáng)靈活性。

例如我們可能會(huì)這樣寫代碼:

class Person {
 constructor(name, bloodGroup) {
   this.name = name;
   this.bloodGroup = bloodGroup;
 }
}
const person = new Person('joe', 'a')

如果我們想擴(kuò)充 bloodGroup (血型)的種類,我們可以把 bloodGroup 重構(gòu)成一個(gè)類。

class BloodGroup {
 constructor(name) {
   this.bloodGroup = name;
 }
}
class Person {
 constructor(name, bloodGroup) {
   this.name = name;
   this.bloodGroup = bloodGroup;
 }
}
const bloodGroup = new BloodGroup('a');
const person = new Person('joe', bloodGroup)

這樣,我們就可以在bloodGroup字段中存儲(chǔ)更多種類的數(shù)據(jù)。

用狀態(tài)/策略替換類型代碼

有時(shí),我們可以根據(jù)對(duì)象的類型創(chuàng)建子類,而不是在類中使用類型字段。這樣,我們就可以在它們自己的子類中擁有兩個(gè)類不共享的更多成員。

例如我們可能會(huì)這樣寫代碼:

class Animal {
 constructor (type) {
   this.type = type }
}

const cat = new Animal('cat')
const dog = new Animal('dog')

我們可以根據(jù) type 類型來重構(gòu)對(duì)應(yīng)的類:

class Animal {
 //...
}
class Cat extends Animal {
 //...
}
class Dog extends Animal {
 //...
}
const cat = new Cat();
const dog = new Dog();

在上面的示例中,我們單獨(dú)編寫一個(gè)Animal類,而另外添加Cat和Dog類,它們是Animal類的子類。

這樣我們可以 Cat 和 Dog 類中共享的屬性保存在各自的類的,把共享的放在 Animal 類中。

分解條件表達(dá)式

我們可以將長的條件表達(dá)式分解為更小的條件表達(dá)式。

例如我們可能會(huì)這樣寫代碼:

let ieIEMac = navigator.userAgent.toLowerCase().includes("mac") && navigator.userAgent.toLowerCase().includes("ie")

我們可以這樣重構(gòu)它:

let userAgent = navigator.userAgent.toLowerCase();let isMac = userAgent.includes("mac");let isIE = userAgent.toLowerCase().includes("ie");let isMacisMacIE = isMac && isIE;

我們將冗長又難懂的條件表達(dá)式分解多個(gè)短小表達(dá)式,這樣會(huì)大大滴增加閱讀性。

感謝各位的閱讀,以上就是“JavaScript對(duì)象重構(gòu)方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)JavaScript對(duì)象重構(gòu)方法是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI