[四种方法]检测数据类型

1.typeof

返回值是一个字符串,如果用两个及以上的typeof检测的话返回值"string",但是他有局限性,能详细检测基本数据类型,但是null不行,检测出来是object,对于引用数据类型步详细检测 只返回object和function.

2.instanceof

检测某个实例是否数据某各类,因为每一种数据类型都对应自己所属的类,所以我们可以通过他来检测数据类型,但是他也有局限性,对于基本数据类型用字面量创建方式创建的变量是无法检测的,但构造函数创建方式可以,引用数据类型可以详细检测

3.constructor

每个类的原型(prototype)上都有一个constructor属性,它指向类本身,那么一个具体的数据类型的实例.constructor 比如"11".constructor->"11"._ _ proto _ _ ->String.protype, string原型上有constructor指向string本身,你也可以通过他的name来得到String类名,也就是他的数据类型

4.Object.prototype.toString()

对象Object类的原型上有一个toString,他可以检测数类型,那么我们就调用Object.prototype.toString()这个方法,用call将里面的this改变成我项检测的那个数据类型,会得到toString console.log(({1:1}).toString());

这个方法不兼容所有浏览器,兼容写法如下⤵️

function getType(type){
  return Object.prototype.toString.call(type).split("")[1].replace("]",'');
}
posted @ 2017-06-26 14:14  和盛商行  阅读(263)  评论(0编辑  收藏  举报