判断JS数据类型的方法

38次阅读

共计 867 个字符,预计需要花费 3 分钟才能阅读完成。

在 ECMAScript 中,共定义了 7 种数据类型,分为基本类型和引用类型,如下所示:

基本类型:String、Number、Boolean、Symbol、Undefined、Null
引用类型:Object
基本类型也称为简单类型,由于其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈中,即按值访问。
引用类型也称为复杂类型,由于其值的大小会改变,所以不能将其存储在栈中,否则会降低变量查询速度,因此,将其存储在堆中,而存储在变量处的值是一个指针,指向存储对象的内存处,即按址访问。引用类型除 Object 外,还有 Array、Function、Date、RegExp 等。

一、typeof

typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。返回的结果包括以下 7 种类型:Number、String、Boolean、Symbol、Undefined、Object、Function

typeof 返回的值大致归为:

  • 对于基本类型,除 null 外一律返回正常类型
  • 对于引用类型,除 function 外,一律返回 object
  • Null 返回 object 类型
  • Function 返回 function 类型

其中,null 有属于自己的数据类型 null,引用类型中的数组、日期、正则也有属于自己的数据类型,而 typeof 对于这些类型的处理,只返回了处于其原型链最顶端的 Object 类型。

二、Instanceof

Instanceof 用来判断 A 是否是 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则,返回 false。

三、Constructor

当一个函数 F 被定义时,JS 引擎会为 F 添加一个 prototype 原型,然后再在 prototype 上添加 constructor 属性,并让其指向 F 的引用。

四、Object.prototype.toString()

toString 是 Object 的原型方法。对于 Object 对象,直接调用 toString() 对于其他对象,则需要通过 call/apply 来返回正确的类型信息。

正文完
 0