美文网首页
js中如何准确的判断数据类型

js中如何准确的判断数据类型

作者: 丶Pal | 来源:发表于2017-12-25 22:10 被阅读0次

    第一种方式也是最常见的方式,用type of判断:console.log(type of data),typeof检测基本类型是没有问题的,如字符串、数值、布尔和undefined,但是如果检测对象或null的话都会返回‘object’;

    第二种方式,用 instanceof 判断,注意此方法后面一定是数据类型:console.log(data instanceof Array),通常我们并不是想知道某个值是对象,而是想知道它是什么类型的对象,如上:变量data是Array类型的对象?; 

    注意:所有引用类型值都是object的实例,所以在检测一个引用类型值和Object构造函数时,instanceof操作符会一直返回true。如用instanceof操作符检测基本类型值时,会一直返回false,原因很简单,因为基本类型不是对象。

    第三种方式,用constructor判断:console.log(data.constructor === Array);

    第四种方式,用Object.prototype.toString.call(data);此种方式可以准确的判断出数据类型。

    console.log(Object.prototype.toString.call(data));

    原理:

    1、在JavaScript中,一切皆为对象,强制将变量转换成为字符串,使它暴露出内部的[[class]]属性。

    2、首先获取对象内部属性[[class]](每个对象都有属于自己的[[class]]),然后根据这个属性返回一个类似于"[object Number]"的字符串作为结果,    ([[]]用来表示语言内部用到的,外部不可直接访问的属性,称之为内部属性。)。利用此方法并且配合call方法可以取得任何对象内部属性的[[class]],然后把类型检测转化为字符串比较,以此来判断数据类型。

    相关文章

      网友评论

          本文标题:js中如何准确的判断数据类型

          本文链接:https://www.haomeiwen.com/subject/ikyrgxtx.html