(Day5) 原始型别及物件型别

在 JavaScript 这语言里,其实指分成两种型别:原始型别、物件型别

原始型别

原始型别又称纯值,在 JS 世界中除了 7 种原始型别,其他的都是物件型别,所以这边先来认识一下有哪些属於原始型别:

  • Boolean
  • Number
  • String
  • Null
  • Undefined

以及後来新增的两种原始型别:

  • Biglnt
  • Symbol

使用 typeof() 这个方法可以查询变数、常数的型别,比较特别的是 查询 null 会回传 object ,这是 JS 长久以来存在的 bug,由於修正了会有许多老旧网站无法运作,於是他变一直存在。

const string = 'test'
typeof(string) // "string"

const num = 1232
typeof(num) //"number"

const boolean = true
typeof(boolean) //"boolean"

const unde = undefined
typeof(unde) //"undefined"

const nu = null 
typeof(nu) //object

值得一提的是这些原始型别,都有一些能够使用的特别方法,例如

const string1 = 'test'
string1.length //4
string1.toUpperCase() // TEST

之所以这些原始型别能够使用这些方法,是因为当我们对 原始型别的资料 使用这些方法时,原始型别会够透过 基本型别包裹器(Primitive Wrapper) 将 原始型别资料 暂时转换成 带有这些 特殊方法的 物件。

实际上我们可以直接使用 new 的建构式方法,来建立转换後的资料,并且对使用 new 建构式建立的资料 使用 typeof 来做他都会回传 Object,也因为这个特性我们实做时不太会使用这种方法建立相关资料。

const string2 = new String('test')
typeof string2 //object 

在浏览器输入 string2 除了会回传我们建立的资料,还有一个 [[Prototype]] (原型)栏位,将他点开会发现 该型别能使用的特别方法都藏在这里:

(原型以及建构式,在後续原型章节则会再介绍到。)

new Boolean();
new String();
new Number();
BigInt();
Symbol();

唯独 undefined 以及 null 是没有基本型别包裹器。

物件型别:

除了上面 7 种原始,其他都属於物件型别,这边也介绍一下常用到的物件型别。

array

阵列也是属於物件型别的一种,这边使用上面提到的 typeof() 就能确认这点

const array =[1,2,3]
typeof(array ) //object

函示

函示也是物件型别的一种,使用 typeof() 他会回传 "function" ,但函示其实是比较特别的物件,被称做『函式物件 ( Function Object )』, 这点 MDN 文件也有提到:

Function 建构函式可建立一个新的 Function 物件。在 JavaScript 中,所有的函式实际上都是 Function 物件。

参考资料


<<:  .Net Core Web Api_笔记04_HTTP资源操作模式Put

>>:  [Day3] 论前端框架的好处及重要性~从自己刻到学习共通语言(下篇)

RDS Transacrion

由於RDS注重资料的一致性, Transaction就相对重要, 也是RDS的优势. 从最基本的Be...

OpenSSL

OpenSSL 是一个开源命令行工具,通常用於生成私钥、创建 CSR、安装 SSL/TLS 证书以及...

Day 13 - 密码破解软件初体验

出於书本 Chapter 7. Passwords 话说... 书本在讲解各种密码破解的相关知识时,...

Day 30 | 结语 & 心得

来到铁人赛的第30天,也就是最後一天了,今天我想要和深度学习的初学者们,以及愿意阅读我文章的读者,分...

[番外] 来个 Weather App (续)

前置作业-HTML & CSS 使用 Google 查 Weather App 会有很多很多...