前端筆記-JavaScript-原始型別及物件型別

JavaScript 有哪些型別呢?

Gene
Jul 5, 2021

JavaScript 總共有八種型別:

  1. string
  2. number
  3. null
  4. undefined
  5. boolean
  6. BigInt(new)
  7. Symble(new)
  8. object

除了 object(物件)是物件型別以外,其他都是原始型別,而 BigInt 與 Symble 較特殊在此先不討論,因為我還沒學到,啊哈哈。

原始型別(Primitive Data Type)

資料來源 — 六角學院
var str = '文字' 
typeof str // string
var num = 123
typeof num // number
var isBoolean = true
typeof isBoolean // boolean
var isUndefined
typeof isUndefined //undefined
var isNull = null
typeof isNull // object

原始型別的特色就是只有一個值,沒有屬性,基本上直接使用『type of』 就能顯示型別,除了『null』,照理說型別是 null ,使用 type of 會顯示 『object』 ,那是 JavaScript 早期的老錯誤,但也無法更改,因為有很多應用是用此判斷來執行,修改了程式會無法運行。

包裹物件

相信大家在使用原始型別的時候,也會知道它們都會有各自的一些方法,像以字串來說,就有轉大寫、長度、去除空格等方法

var str = 'Hello World! ';
console.log(str.toUpperCase()); //HELLO WORLD!
console.log(str.length); //13
console.log(str.trim()); //Hello World! (去除後方空格)

而為什麼它們可以使用這些方法呢?就是因為他們都有各自的包裹物件,而這些包裹物件裡就有包含他們對應型別可以使用的方法

怎麼看到包裹物件的方法

var ming = '小明'
console.log(ming); // 小明

我們宣告 ming 是一個字串,當我們直接呼叫 ming 的時候只會回傳小明,不會有任何方法,我們用另外一種方式來宣告看看

var ming = new String('小明');
console.log(ming); // String {"小明"} ,以及它的方法

我們可以看到使用這種方法就可以看到這個字串物件有 __proto__ 原型,裡面就有原型對應的方法了!所以我們在操作原始型別的時候,其實它就會套用這些包裹物件了,所以原始型別可以使用包裹物件裡的所有方法!

盡量不要使用這種方式宣告

var ming = new String('小明');
console.log(typeof ming); // object

使用這種方式來宣告一個字串,我們稱為『建構式』雖然可以使用字串的包裹物件方法,但使用 typeof 來查看,會發現它是一個物件而不是字串,也就是說這種方式宣告出來的物件不會是原始型別,而是物件型別,跟原始型別的操作會有些差異。

--

--

Gene
Gene

Written by Gene

— Do or Do Not. There is no Try!

No responses yet