确定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 的引用

全部评论

相关推荐

诨号无敌鸭:恭喜佬,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务