确定JavaScript数据类型的几种方法

1、typeof
优点:可以判断基本数据类型,包括Undefined,null;
缺点:不能判断对象数据类型,不能区分Object、function、array。

2、instanceof
A instanceof B:判断A是否为B的实例,返回true或者false。判断A的原型链中是否有原型B。
优点:可以区分对象的数据类型;
缺点:判断基本数据类型Undefined,null时会报错,因为Undefined和null中是否有构造韩函数。

3、constructor
当构造函数F定义时,js引擎会为F添加prototype对象,为prototype对象添加constructor属性。constructor属性会指向F的引用。
var f = new F(), f为F的实例化对象,F的constructor传递给f,f.constructor == F
var f = new F()
f.constructor == F //返回true
举例如下:
图片说明

4、toString()方法
Object的原型方法toString(),默认返回当前对象的类型
如果对象的类型为对象,就直接使用
如果对象的类型为其他,就需要使用call/apply方法
举例:
Object.prototype.toString.call('') ; // [object String]
Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(true) ;// [object Boolean]
Object.prototype.toString.call(Symbol());//[object Symbol]
Object.prototype.toString.call(undefined) ;// [object Undefined]
Object.prototype.toString.call(null) ;// [object Null]
Object.prototype.toString.call(newFunction()) ;// [object Function]
Object.prototype.toString.call(newDate()) ;// [object Date]
Object.prototype.toString.call([]) ;// [object Array]
Object.prototype.toString.call(newRegExp()) ;// [object RegExp]
Object.prototype.toString.call(newError()) ;// [object Error]
Object.prototype.toString.call(document) ;// [object HTMLDocument]
Object.prototype.toString.call(window) ;//[object global] window 是全局对象 global 的引用

全部评论

相关推荐

废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 15:19
简历上能写3个月吗?
码农索隆:大胆写,主要你能把实习经历包装好,可以看一下我这篇帖子https://www.nowcoder.com/share/jump/4888395581180798063
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务