次世代 Hugo

無駄を削ぎ、本質を研ぐ

タグ : ECMAScript

如何建立 Pure Object ?

ECMAScript 因為提供了 Object Literal,一般我們都會使用 Object Literal 建立 Object,但所建立的 Object 並非 Pure Object,還會繼承 Object.prototype 原本的 Property。

ECMAScript 之 Bitwise Operator

有些時候二進位表示法非常好用,如要設定 User 權限是否有 新增修改刪除查詢權限,若每個權限都用二進位的 1 個 bit 表示,0b1111 就表示 4 種權限都有,而 0b1010 則表示只有 新增刪除 權限,以此類推,但這種二進位表示法,該如何在 ECMAScript 使用呢 ?

Module 進化史:CommonJS、AMD 與 ES Module

ECMAScript 之前很難寫大程式,主要是因為沒有 Module 概念,常常一個檔案寫兩三千行程式,且大量使用 Global Variable 造成 Side Effect 很難維護。早期會使用 Module Pattern 解決,稍後更有 CommonJS 與 AMD 試圖制定 Module 標準,一直到 ES Module 後,ECMAScript 模組化總算塵埃落定,是重要里程碑。

如何取得以 Object 為 Key 的 Map ?

Map 為 ECMAScript 2015 新支援的資料結構,類似 Object 但功能更強,尤其 Key 可為任何型態包含 Object;若 Key 為 Object 時,由於 ECMAScript 語言特性,將無法簡單使用 get() 取得資料。

如何降低程式碼複雜度 ?

if elseswitch case 是最基本的邏輯判斷方式,但卻也是 複雜度 的元兇,實務上善用 ECMAScript 語言特性與 Higher Order Function 降低複雜度,讓程式碼可讀性更高,也更容易維護。

如何實現 Pure Function ?

FP 三部曲 (Declarative、Pure Function 與 Immutable) 中的第二部曲就是 Pure Function,但也由於 ECMAScript 對於 Argument 有 Pass by Value 與 Pass by Reference 兩種,且型別並沒有完整支援 Immutable,因此實現 Pure Function 時有些 Tricky。

深入探討 Arrow Function 與 this

ECMAScript 5 無論是 Function Declaration 或 Anonymous Function,都可以使用 this 搭配 call()apply()bind() 動態改變 this,ECMAScript 2015 支援了 Arrow Function 後,這對原本的 thiscall()apply()bind() 有任何影響嗎 ?