这篇文章主要介绍JavaScript类型的判断方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,本篇文章给大家带来的内容是关于JavaScript类型判断的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
<强> JS数据类型判断强>
有的时候需要判断数据类型,应对各种复杂的逻辑判断,先来个咱们最常用的。
1。typeof
typeof操作符返回一个字符串、并表示该变量的类型。
“打开/typeof(操作数)
var testString=& # 39; adus& # 39; testArray=[], testBoolean=true, testNumber=0, testObject={}, testNull=零, testUndefined=未定义 控制台。日志(typeof testString);//字符串 控制台。日志(typeof testArray);//对象 控制台。日志(typeof testBoolean);//布尔 控制台。日志(typeof testNumber);//号码 控制台。日志(typeof testObjec);//对象 控制台。日志(typeof testNull);//对象 控制台。日志(typeof testUndefined);//未定义的
当然不只有上面的这些基础类型,还有下面这些:
符号(ECMAScript 6新增),,“symbol"
宿主对象(由JS环境提供),,具体实现相关的
函数对象([[说]]在ecma - 262条款中实现了),,“function"
咦?有点不对,为什么数组,空等都是对象呢? ? ?请往下看
函数或者数组这些类型的实例的时候,其实都是基于对象实例进行的一种扩展。只是多了一些特有属性。
在JavaScript最初的实现中,JavaScript中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是0。
由于零代表的是空指针(大多数平台下值为0 x00)。
因此,空的类型标签也成为了0,typeof零就错误的返回了“object"。(引用)
2。运算符
instanceof运算符用于测试构造函数的原型属性是否出现在对象的原型链中的任何位置,通俗点说就是一个变量是否某个对象的实例。
对象实例构造函数对象要检测的对象/构造函数构造函数
函数fnc () {} var newFnc=new fnc (); console.log (newFnc。__proto__==fnc.prototype);//真实的 控制台。日志(newFnc instanceof fnc)//真实的/*字符串对象和日期对象都属于对象类型和一些特殊情况*/var simpleStr=?这是一个简单的string"; myString var=新的字符串(); var newStr=新的字符串(“字符串创建constructor"); var替换日期=new (); var myObj={}; var myNonObj=Object.create(空); simpleStr instanceof字符串;//返回假,检查原型链会找到定义 myString instanceof字符串;//返回现实 newStr instanceof字符串;//返回现实 myString instanceof对象;//返回现实 myObj instanceof对象;//返回真,尽管原型没有定义 ({})实例对象;//返回真,同上 myNonObj instanceof对象;//返回假,一种创建对象的方法,这种方法创建的对象不是对象的一个实例 myString instanceof日期;//返回错误的 替换运算符日期;//返回现实 替换运算符对象;//返回现实 替换运算符的字符串;//返回假
3. object.prototype.tostring ()
每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个对象对象继承。如果此方法在自定义对象中未被覆盖,toString()返回“对象类型”,其中类型是对象的类型。
Function.prototype。(thisArg)/Function.prototype打电话。应用(thisArg)
传递要检查的对象作为第一个参数,称为thisArg。
var toString=Object.prototype.toString; toString。调用(新日期);//日期(对象) toString。调用(新的字符串);//对象(字符串) toString.call(数学);//(对象数学) 自于JavaScript 1.8.5//toString.call(定义);//(对象定义) toString.call(空);//(Null对象)
在合适的场景用恰当的方法,会很省的心,也能保证代码的简洁,健壮。