JavaScript判断变量类型的方法

JavaScript有4种方法判断变量的类型

	typeof:常用于判断基本数据类型,对于引用数据类型除了function返
		    回’function‘,其余全部返回’object’。

instanceof:主要用于区分引用数据类型,检测方法是检测的类型在当前实例的原
			型链上,用其检测出来的结果都是true,不太适合用于简单数据类型
			的检测,检测过程繁琐且对于简单数据类型中的undefined,null, 
			symbol检测不出来。

constructor:用于检测引用数据类型,检测方法是获取实例的构造函数判断和某个			
			 类是否相同,如果相同就说明该数据是符合那个数据类型的,这种方
			 法不会把原型链上的其他类也加入进来,避免了原型链的干扰。

Object.prototype.toString.call():适用于所有类型的判断检测,返回的是该数据类型的字符串。

这四种判断数据类型的方法中,各种数据类型都能检测且检测精准的就是
Object.prototype.toString.call()这种方法。
instanceof的实现原理:验证当前类的原型prototype是否会出现在实例的原型链__proto__上,只要在它的原型链上,则结果都为true。
因此,instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的
prototype,找到返回true,未找到返回false
Object.prototype.toString.call()原理:Object.prototype.toString
表示一个返回对象类型的字符串,call()方法可以改变this的指向,那么把Object.prototype.toString()方法指向不同的数据类型上面,返回不同的结果
typeof对于区分数组和对象是没有用的。

1.通过ES6中的Array.isArray来识别

Array.isArray([])  //true
Array.isArray({})  //false

2.通过instanceof来识别

[] instanceof Array   //true
{} instanceof Array   //false

3.通过调用constructor来识别

{}.constructor    //返回object
[].constructor    //返回Array

4.通过Object.prototype.toString.call方法来识别

Object.prototype.toString.call([])   //["object Array"]
Object.prototype.toString.call({})   //["object Object"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值