JavaScript CheatSheet

date
Sep 22, 2023
slug
javascript-object-cheatsheet
status
Published
tags
JavaScript
summary
筆記一下 JavaScript 中容易混淆的部分
type
Post

Object

Comparison
Object.keys
Object.getOwnPropertyNames
for in
Object.entries
enumerable
non-enumerable
inherited
Comparison
in (operator)
hasOwnProperty
Object.hasOwn
Symbol
inherited
getter/setter

Iterate over the enumerable properties of an object

or
for 會拿到 enumerable properties,但用 for in 可能會有 inherited property,所以可以用 hasOwnProperty 或 Object.hasOwn 濾掉。不過還是建議使用 Object.keys(…) or Object.entries(…)。
 

Class brand checking

如果要確認一個 object 是不是這個 class new 出來的,可以使用 instanceof 來做判斷
但其實這只有比較 prototype chain 而已
想要更安全地檢查方式可以利用 private field 不會繼承的特性 以及使用 in operator 來檢查
 

Empty slot checking

在 sparse array 中,單從值來看難以區分是不是 empty,因為在 js 中都被當作 undefined。但我們可以使用 in operator 來判斷
 

Reference

  • MDN

Function

function 可以使用 new operator 去產一個 object,在 class 出現前常見的做法。運行的順序是
(1) 生出一個 plain object
(2) bind constructor 的 prototype 在 object 上
(3) 以這個 object 為 context (this) 執行 function (constructor)
(4) 如果有 return value 就吐他,沒有的話就是吐那個 object
 
因此,
 

Reference

 

© maxam 2023 - 2024