Skip to content

Latest commit

 

History

History
43 lines (30 loc) · 1.81 KB

DetermineType.md

File metadata and controls

43 lines (30 loc) · 1.81 KB

类型判断之typeof、instanceof、constructor

使用写法

typeofconstructor都有返回值,根据返回值去判断相应的数据类型

instanceof 算是操作符,左右两边写值进行判断,返回值是布尔类型

注:右边的值一定要是object,否则报错Right-hand side of 'instanceof' is not an object

写法实例

const unkownData // 不知道属性的值
typeof unkownData // 操作符写法
typeof(unkownData) // 函数写法(推荐)

unkownData.constructor

unkownData instanceof String

相同点

  • 三者都可以用来判断数据类型

不同点

typeof(基本数据类型判断推荐使用)

  1. typeof的返回值有number,boolean,string,function,object,undefined,symbol(ES2015新增),bigint(ES2020新增)
  2. NullObjectArray等特殊对象,typeof一律返回object

constructor(不推荐使用)

  1. constructor它的实质是构造函数中prototype的属性值,可以被修改,不可信赖

当在原型对象中设置constructor属性时,只是屏蔽了原型的constructor属性值,而没有覆盖

“JavaScript中的所有内容都是对象”。所以就算是基本数据类型,都会有对应的constructor属性值

JS中基本数据类型的构造函数有BooleanNumberStringFuncitonSymbolBigIntObject,还有一些JS内置构造函数DateMarh等,以及通过new自定义声明的构造函数等

instanceof (引用数据类型判断推荐使用)

  1. 用于判断一个数据是否出现在右边的实例对象的原型链上
  2. 不能用来判断字符串和数字等

详细解释参考MDN-instanceof

数组的判断推荐使用Array.isArray()