點燈坊

失くすものさえない今が強くなるチャンスよ

タグ : ECMAScript

ECMAScript 之 Truthy Value

ECMAScript 除了有 Boolean Primitive 外,還有獨特的 Truthy Value 與 Falsy Value 概念;簡單的說,其他 Type 也能自動轉成 Boolean,這使得 if&&|| 有了更多應用。

ECMAScript 之 Property Descriptor

ECMAScript 是一個以 Object 與 Function 為主的語言,有別於 Class 為主的 OOP,ECMAScript 有獨特的 Property Descriptor,在 Object.create()Object.defineProperty()Object.getOwnPropertyDescriptor() 可使用。

深入探討 for...in 與 Class

Object.keys()for...in 的差異在於 Object.keys() 只能顯示目前 Object 的 Property,而 for...in 會連同 Prototype 的 Property 一併顯示。若 for...in 搭配 Constructor Function 或 Object.create() 時一切正常,但搭配 class 時,就無法顯示 Prototype 的 Property 了,為什麼會這樣呢 ?

ECMAScript 之 Class Expression

ECMAScript 2015 除了支援一般 OOP 都有的 Class Declaration 外,還繼承了 ECMAScript 傳統,另外提供了 Class Expression,這使得根據條件動態建立 Class 成為可能。

你所不知道的 Class

Class 是 OOP 必備觀念,ECMAScript 2015 總算支援 Class,讓很多人倍感親切,但事實上 ECMAScript 的 Class 並非如你想得這麼單純。

如何刪除 Array 中的 Object ?

ECMAScript 提供了 splice() 刪除 Array 中的 Element,但必須先提供要刪除的 Index;但若要刪除的是 Object,由於 Object 的比較是 Reference,所以實踐方式比較不一樣。

如何建立 Pure Object ?

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

使用 Babel 支援 Nullish Coalescing Operator

若要為 nullundefined 提供預設值,由於 nullundefined 也是 Falsy Value,過去會使用 || ,但 Empty String 與 0 亦為 Falsy Value,因此可能會造成意想不到 Bug,且語意也不夠精確,?? 提供了更精確的解決方案。

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。

Regular Expression 初體驗

ECMAScript 已經內建支援 Regular Expression,其功能強大無庸置疑,但由於可讀性不高,所以一直沒認真學習,但事實上 Regular Expression 投資報酬率非常高,幾乎所有語言都支援,學一次可用一輩子。