原创 日積跬步,apply/call/bind 自我實現

call/apply/bind 日常編碼中被開發者用來實現 “對象冒充”,也即 “顯示綁定 this“。 面試題:“call/apply/bind源碼實現”,事實上是對 JavaScript 基礎知識的一個綜合考覈。 相關知識點: 作用域

原创 日積硅步,apply/call/bind 自我實現

call/apply/bind 日常編碼中被開發者用來實現 “對象冒充”,也即 “顯示綁定 this“。 面試題:“call/apply/bind源碼實現”,事實上是對 JavaScript 基礎知識的一個綜合考覈。 相關知識點: 作用域

原创 JavaScript 設計模式(八):組合模式

組合模式:又叫 “部分整體” 模式,將對象組合成樹形結構,以表示 “部分-整體” 的層次結構。通過對象的多態性表現,使得用戶對單個對象和組合對象的使用具有一致性。 生活小栗子:文件目錄,DOM 文檔樹 模式特點 表示 “部分-整體”

原创 JavaScript設計模式(八):組合模式

組合模式:又叫 “部分整體” 模式,將對象組合成樹形結構,以表示 “部分-整體” 的層次結構。通過對象的多態性表現,使得用戶對單個對象和組合對象的使用具有一致性。 生活小栗子:文件目錄,DOM 文檔樹 模式特點 表示 “部分-整體” 的

原创 JavaScript 設計模式(七):命令模式

命令模式:請求以命令的形式包裹在對象中,並傳給調用對象。調用對象尋找可以處理該命令的合適的對象,並把該命令傳給相應的對象,該對象執行命令。 生活小栗子:客戶下單,訂單記錄了客戶購買的產品,倉庫根據訂單給客戶備貨。 模式特點 命令模式由

原创 JavaScript設計模式(七):命令模式

命令模式:請求以命令的形式包裹在對象中,並傳給調用對象。調用對象尋找可以處理該命令的合適的對象,並把該命令傳給相應的對象,該對象執行命令。 生活小栗子:客戶下單,訂單記錄了客戶購買的產品,倉庫根據訂單給客戶備貨。 模式特點 命令模式由三種

原创 JavaScript 設計模式(六):觀察者模式與發佈訂閱模式

觀察者模式(Observer) 觀察者模式:定義了對象間一種一對多的依賴關係,當目標對象 Subject 的狀態發生改變時,所有依賴它的對象 Observer 都會得到通知。 簡單點:女神有男朋友了,朋友圈曬個圖,甜蜜宣言 “老孃成功脫單,

原创 JavaScript 設計模式(五):迭代器模式

文章內容分兩部分: 前半部分爲 “迭代器模式” 概念; 後半部分爲 ES6 中 Iterator (迭代器) 上半部分開始... 迭代器模式:提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部表示。 簡單理解(

原创 JavaScript 設計模式(四):適配者模式

適配器模式:將一個類(對象)的接口(方法或屬性)轉化成客戶希望的另外一個接口(方法或屬性),使得原本由於接口不兼容而不能一起工作的那些類(對象)可以正常協作。簡單理解就是爲兼容而生的 “轉換器”。 對於強迫症患者,那麼多形狀各異的接口,對

原创 JavaScript 設計模式(一):單例模式

單例模式:限制類實例化次數只能一次,一個類只有一個實例,並提供一個訪問它的全局訪問點。 單例模式是創建型設計模式的一種。針對全局僅需一個對象的場景,如線程池、全局緩存、window 對象等。 模式特點 類只有一個實例 全局可訪問該實

原创 前端進擊的巨人(八):淺談函數防抖與節流

本篇課題,或許早已是爛大街的解讀文章。不過春招系列面試下來,不少夥伴們還是似懂非懂地栽倒在(~面試官~)深意的笑容之下,權當溫故知新。 JavaScript的執行過程,是基於棧來進行的。複雜的程序代碼被封裝到函數中,程序執行時,函數不斷被

原创 JavaScript 設計模式(三):代理模式

代理模式:爲一個對象提供一個代用品或佔位符,以便控制它的訪問。 當我們不方便直接訪問某個對象時,或不滿足需求時,可考慮使用一個替身對象來控制該對象的訪問。替身對象可對請求預先進行處理,再決定是否轉交給本體對象。 生活小栗子: 代購; 明

原创 JavaScript 設計模式(二):策略模式

策略模式:定義一系列的算法,把它們一個個封裝起來,並且使它們可以相互替換 生活小栗子:諸葛錦囊 諸葛給劉備的錦囊妙計,遇到任何困難都有應對計策。策略模式實現的也是類似的場景。 再來一慄:給喜歡的女生買冰淇淋,事先不瞭解其喜好,只能集齊各種

原创 JavaScript設計模式(一):單例模式

單例模式:限制類實例化次數只能一次,一個類只有一個實例,並提供全局訪問點。(歸屬創建型設計模式) 模式特點 類只有一個實例 全局可訪問該實例 自行實例化(主動實例化) 可推遲初始化,即延遲執行(與靜態類/對象的區別) 實現方式 實現方

原创 前端進擊的巨人(七):走進面向對象,原型與原型鏈,繼承方式

"面向對象" 是以 "對象" 爲中心的編程思想,它的思維方式是構造。 "面向對象" 編程的三大特點:"封裝、繼承、多態”: 封裝:屬性方法的抽象 繼承:一個類繼承(複製)另一個類的屬性/方法 多態:方法(接口)重寫 "面向對象" 編程