前端常用設計模式

2021-10-03 02:03:29 字數 1815 閱讀 3439

炒個冷飯,設計模式(前端常用設計模式)。我們在面試的時候很多情況都需要手寫**,所以我們寫都時候盡量用es6,且裡面要用設計模式。這樣評分可以達到優秀,如果只是手寫實現出功能那麼我們只能是及格(主要面試和別人競爭)

游泳健身了解一下:github

(哈哈哈哈哈?)

你走到一棟大樓面前(哇!鋼筋,水泥,木板。。。)(面向過程)

你走到一棟大樓面前(哇!大樓)(物件導向)

複製**這個時候你應該知道啥是面對物件了,下面對比一下物件導向和面向過程

1.面向過程

其實是物件導向的底層,只是我們把這個過程寫在了物件的類上了,面向過程這樣的使用方式為啥不好,

(優勢也是有的效能好,不用去new 乙個例項,減少效能開銷)

1.不容易維護(好幾千行的**都搞一起了,寫過的都知道)

2.不容易擴充套件(好幾千行的**都搞一起了,寫過的都知道)

3.不容易復用(好幾千行的**都搞一起了,寫過的都知道)

2.物件導向

物件導向有繼承,封裝,多型的特性,物件導向優勢很容易看出,

1.容易維護

2.容易擴充套件

3.容易復用

複製**物件導向的繼承:

es6繼承

class a

}class b extends a

let b = new b()

b.afun() // b 可以繼承a的方法複製**普通常用的繼承

原型鏈繼承

function a(){}

a.prototype.afun = function() {}

function b(){}

b.prototype = new a()

let b = new b()

b.afun() // b通過原型鏈 prototype 可以呼叫到a的方法

// 問題,當前並不能執行a的方法只是繼承到來a到方法(而且a方法居然在之前就使用過一次)

建構函式

function a(a)

a.prototype.afun = function()

function b()

let b = new b()

b.a // 可以獲取到當前

// 問題,當前並不能繼承a的方法,只能使用a方法

混合使用

function a(a)

a.prototype.afun = function()

function b()

b.prototype = a.prototype

b.prototype.constructor = a

let b = new b()

console.log(b.a)

b.afun()

// 這樣就可以使用當前a的方法,不懂的小夥伴可以自己碼一下試試

複製**物件導向對封裝(隱藏物件對屬性和方法,對外部提供屬性和使用方法),提高復用性和安全性。

物件導向對多型(就是多種狀態)(同一種行為有不同表現的能力)js 並沒有提供什麼模版啥的,我們可以看下下面的

class a

}class b extends a

}class c extends a

}class abstracteat

}eat()

}// 家常菜

class 西紅柿炒雞蛋 extends abstracteat

eat()

}// 蛋糕店

class 奶油蛋糕 extends abstracteat

eat()

}

前端常用設計模式

像流水線作業,產出一樣的產品。傳參進去,操作的具體邏輯封裝在乙個方法裡,最終返回乙個物件。將new操作單獨封裝,遇到new時,就要考慮是否用工廠模式 這個creator就是乙個工廠,裡面有create函式,工廠通過create函式建立product。這樣通過create已經把真正的建構函式封裝起來,...

前端常用設計模式

前端常見的設計模式主要有以下幾種 1.單例模式 2.工廠模式 3.策略模式 4.模式 5.觀察者模式 6.模組模式 7.建構函式模式 8.混合模式 這種設計模式的思想是確保乙個類只有唯一例項,一般用於全域性快取,比如全域性window,唯一登入浮窗等。採用閉包的方式實現如下 var single f...

前端開發設計模式

高階高階前端開發之路之設計模式,衝!記錄一些學的七七八八的程式設計思維,設計模式 vue router物件是放在vue的原型鏈上的 只有get沒有set vue.prototype.router router object.defineproperty vue.prototype router 總結...