懶人記法:除了原始型別外其他都是物件型別。
原始型別
- string
- number
- boolean
- null
- undefinded
- bigInt(new)
- symbol(new)
以上型別除了 null 跟 undefinded 外,都有包裹物件 (_proto)
可以使用。
typeof
使用 typeof 可以判斷型別的類型,
1 | let a = "Tim"; //string |
若各自使用 typeof()
會得到後方註解的值。
其中 d 為物件型別,非原始型別。
可是 null 得到的值應該是空值,但卻得到是物件型別,這其實是 JS 長期以來的錯誤,但卻未被修正,原因是已經有許多網站都已經沿用 null 這個錯誤的型別進行網站開發,如果改變其型別,可能許多開發案件會出現許多問題,所以遲遲沒有修正。
對於 not defined 的保護措施
目前沒有宣告 var f 這個變數,如果使用 console.log(f);
會跳錯,若用型別檢視 console.log(typeof f);
則會出現 undefined
,這是 JS 對於 not defined 的保護措施。
物件型別
上方提到除了原始型別外,其他都是物件型別,若將上方變數來使用,可以透過該物件的包裹物件方法來檢視這個變數,例如:
檢視物件長度 length
1 | let a = "Tim"; |
將其值改成大寫 toUpperCase()
1 | let a = "Tim"; |
消除空格 trim()
在 Tim 後面加上空白,透過 trim();
將空格消除。
1 | let a = "Tim "; |
可自行複製到瀏覽器中的 console 試試看
檢視物件型別的方法
下方有一個物件,透過 console.log
後,會看到瀏覽器有 __proto__
1 | let obj = { |
其中就會看到我可以使用的方法了。
1 | {name: "Tim"} |