判断数据类型封装方法:
1)type返回字符串类型
2)is开头返回Boolean类型
测试实例:
JavaScript
判断数据类型的方式共有四种
- typeof
- instanceof
- constructor
- Object.prototype.toString
typeof
typeof
操作符返回一个字符串,表示操作值的类型
利用 typeof
判断数据类型的语法是 typeof target
。 示例如下:
instanceof
instanceof
运算符用于检测构造函数的 prototype
属性是否出现在某个 实例对象 的原型链上
利用 instanceof
判断数据类型的语法是 target instanceof constructor
。 示例如下:
用于判断操作值是否是指定构造函数的实例。
缺点:
- 不能判断基本数据类型,因为基本数据类型并不是构造函数的实例,没有原型链。
- 因为原型链的终点是
Object.protype => null
,所以引用数据类型的原型链上都会存在Object.protype
,所以引用数据类型instanceof Object
的时候都返回true
。 - 原型链可以被修改,所以结果值不一定准确。
constructor
利用 constructor
判断数据类型的语法是 target.constructor === constructor
。 示例如下:
用于判断操作值是否是指定构造函数的实例,可以判断 null
和 undefined
除外的所有数据类型,之所以 null
和 undefined
不可以,是因为他们作为 JavaScript
运行环境创建时就存在的基本数据类型,不存在 constructor
属性
基本数据类型为什么会有 constructor
属性呢? 是因为基本数据类型获取 constructor
属性的时候,JavaScript
自动将基本数据类型的值转为包装对象实例,并在使用后立刻销毁实例。
缺点:constructor
属性可以被修改,所以结果值不一定准确。
Object.prototype.toString
返回对象的类型字符串.
利用 Object.prototype.toString
判断数据类型的语法是 Object.prototype.toString.call(target)
。 示例如下:
可以准确判断所有数据类型。