亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中創建類的優秀做法以及什么時候創建類

發布時間:2021-09-30 17:05:28 來源:億速云 閱讀:96 作者:柒染 欄目:web開發

JavaScript中創建類的優秀做法以及什么時候創建類,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

使用默認參數和屬性縮寫,清理我們的JavaScript代碼很容易。

構造函數

為了讓我們的構造函數更好地發揮作用,我們應該做一些事情。它們是:

如果可能的話,初始化所有構造函數中的所有成員數據

我們應該將它們全部放入構造函數中,以便在實例化對象時將它們全部初始化。

所以我們可以這樣寫:

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

現在我們確保所有的東西都用一個值初始化了。

在構造函數中創建一個單例

如果我們只需要一個構造函數的一個實例,那么我們可以創建一個實例。

例如,我們可以編寫以下代碼:

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

在上面的代碼中,如果 this.instance 還沒有定義,我們返回我們創建的對象。

否則,我們將返回設置為 this.instance 的任何內容。

優先使用深度拷貝而不是淺拷貝

深度拷貝會復制所有內容,因此比淺層復制要好得多,淺拷貝會留下一些引用原始對象的東西。

如果我們想要真正的副本,那就不好了。

因此,我們必須編寫代碼來制作深層副本,如下所示:

const copy = obj => {   const copied = {     ...obj   };   for (const k of Object.keys(obj)) {     if (typeof obj[k] === 'object') {       copied[k] = {         ...copied[k]       };       copy(copied[k]);     }   }   return copied; }

如果發現嵌套對象,我們只使用擴展運算符來復制嵌套對象,并遞歸執行相同的操作。

然后,我們返回我們復制的對象。

我們什么時候應該創建一個類?

我們不應該總是創建類。在一些場景中,創建一個類是有意義的。

模擬現實世界的對象

類非常適合建模真實世界的對象,因為它們可以建模對象的行為。

它們允許我們將實例變量和方法封裝到一個包中,分別存儲狀態和對對象執行操作。

建模抽象對象

同樣,我們可以使用類對抽象對象進行建模。

它們可以用來進行抽象,抽象是對不同類型對象的概括。

類非常適合存放子類的共享成員,子類可以繼承它們。

但是,我們應該保持繼承樹的簡單性,這樣人們就不會被代碼弄糊涂了。

降低復雜度

我們可以使用類來降低程序的復雜性。

類非常適合隱藏信息。在JavaScript中,類中還沒有私有變量,因此我們必須在方法中隱藏數據。

這樣我們就可以最小化程序不同部分之間的耦合。

隱藏實現細節

方法也適合隱藏實現細節。

我們可以把細節隱藏在方法中,只運行需要的東西。

為此,我們可以在方法內部嵌套函數和變量。

限制變化的副作用

由于我們可以隱藏事物,因此可以減少更改的影響。

與隱藏實現一樣,可以通過在方法內限制更改的影響來隔離更改的影響。

隱藏全局數據

通過將全局數據放入類的方法中,它們可以成為私有數據。

這樣,他們就不必向公眾公開。我們要做的就是使用 let 和 const 在方法中聲明它們。

簡化參數傳遞

如果我們將相同的參數傳遞給不同的函數,則可以將參數更改為實例變量,將函數更改為方法。

例如,如果我們有:

const speak = (name) => `${name} spoke`; const greet = (name) => `hi, ${name}`;

然后,我們可以將方法放入自己的類中,如下所示:

class Person {   constructor(name) {     this.name = name;   }   speak() {     return `${this.name} spoke`;   }   greet() {     return `hi, ${this.name}`;   } }

現在,我們不必在任何地方傳遞 name。

我們只需要創建一個 Person 實例,并調用這些方法而無需傳入任何參數。

我們可以創建類來封裝數據并將內容打包在一起。但是,我們不應該為所有內容創建類。

另外,我們應該盡可能深拷貝而不是淺拷貝。

看完上述內容,你們掌握JavaScript中創建類的優秀做法以及什么時候創建類的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪泽县| 张家界市| 邵阳市| 大关县| 万盛区| 临汾市| 河东区| 甘孜县| 淮滨县| 长白| 宁陕县| 青州市| 黎平县| 和林格尔县| 哈密市| 唐山市| 大连市| 乐昌市| 湘潭市| 曲松县| 靖州| 临潭县| 罗城| 丰台区| 兴化市| 黄山市| 乌拉特后旗| 新干县| 丰原市| 扶风县| 伊川县| 辽宁省| 华蓥市| 南靖县| 万全县| 云浮市| 缙云县| 贞丰县| 依兰县| 深圳市| 邢台县|