检测数据类型的常⽤⽅法
除Object之外的数据类型,例如:Number,String等
1)typeof常⽤于检测除Object之外的数据类型
字符串,然后包含了我们常⽤的数据类型,例如:"number"、"string"、"boolean"、"undefined"、"object"、"function"
返回值:⾸先是⼀个字符串
typeof ["12"] -> "string"
object" 因为null是⼀个空对象指针
null ->"object
2)typeof null
3)typeof不能具体的细分对象、数组、正则等,因为不管检测哪⼀个返回的都是"object"
检测结果
2、insta nc eo f / c o nstruc to r----多⽤于判断引⽤数据类型
instanceof------变量/数值  instanceof  数据类型
1)instanceof------变量/数值  instanceof
适合⼀些
对象类型,并且⼤⼩写不能错,该⽅法适合⼀些检测当前实例是否属于某⼀个类,属于的话返回true,不属于返回false,instanceof后⾯⼀定要是对象类型
条件选择或分⽀。
var arr=[  ];
instanceof Array ->true
arr instanceof
arr instanceof
instanceof RegExp ->false
所有的对象都是Object这个基类的⼀个实例
instanceof Object ->true 所有的对象都是Object这个基类的⼀个实例
arr instanceof
constructor------通常通过全等判断的⽅式进⾏判断
2)constructor------通常通过全等判断的⽅式进⾏判断
3)instanceof的局限性:只要在这个实例的原型链上的类,⽤instanceof检测的时候都为true,
只要在这个实例的原型链上的类,⽤instanceof检测的时候都为true,在类的继承中,我们只是单纯通过instanceof 来检测数据类型的话是不准确的
检测结果
< Str ing检测数据类型------to String.c a ll(值)/ Objec t.pro String
String检测数据类型------to
.c a ll(值)
1)原理:在Object.prototype上有⼀个toString⽅法,这个⽅法执⾏的时候,会返回⽅法中this关键字对应数据值的数据类型,
this关键字对应数据值的数据类型,例如:这⾥的this 对应的数据类型为Object
String()
//  "[object Object]"
2)这样的话,我们就可以让String执⾏,并且通过call/apply来改变⾥⾯的this关键字,也就是想检测谁的数据类型,我们就可以让this变为谁
内置类]"
3)检测的返回值 -> "[object 当前数据类型所属的内置类
typeof array
检测结果
⽤String.call()最检测的结果为准确。
根据不同的⽅法监测的结果可以知道,如果单纯是⽤来判断数据类型,⽤String.call()最检测的结果为准确。
其次是constructor,instanceof,typeof

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。