基于JS的类型检测
来源:互联网 发布:淘宝全国销量排行榜 编辑:程序博客网 时间:2024/06/05 08:52
(一)准备
js中数据类型可分为两大类:
那么,判断js数据类型,也就是我们说的类型检测,本文提供五种方法,如下:原始类型:Number,String,Boolean,Null,undefined
对象类型:Object,包含Function,Array,Date等
(二)typeof运算符
typeof算是最常见的,使用时会返回一个字符串,适合函数对象和基本类型(js中的基本类型:number、string、boolean、null、undefined、object[对象])的判断。
例子:
typeof 100 === “number”typeof true === “boolean”typeof function () {} === “function”typeof(undefined) ) === “undefined”typeof(new Object() ) === “object”typeof( [1, 2] ) === “object”typeof(NaN ) === “number”typeof(null) === “object”
(三)instanceof操作符
obj instanceof Object,适合自定义对象,也可以用来检测原生对象。左边操作数obj为对象(如果写成其他类型,就会返回false),右边操作数Object为函数对象或者是函数构造器,否则抛出TypeError。 此方法是判断出具体的数据类型,绝不含糊。
注意:不同的Windows或iframe间的对象类型检测不能使用instanceof。
例子:
[1, 2] instanceof Array === truenew Object() instanceof Array === false
(四)Object.prototype.toString方法
通过Object.prototype.toString得到,适合内置对象和基本类型
注意:当IE6/7/8遇到null和undefined时此方法会失效,会返回[object,object]
例子:
Object.prototype.toString.apply([]);=== “[objectArray]”;Object.prototype.toString.apply(function(){}); ===“[object Function]”;Object.prototype.toString.apply(null); === “[object Null]”Object.prototype.toString.apply(undefined); === “[object Undefined]”IE6/7/8 Object.prototype.toString.apply(null) 返回”[objectObject]”
(五)constructor属性
在使用instanceof检测变量类型时,我们是检测不到number, 'string', bool的类型的。因此,我们需要换一种方式来解决这个问题。
所有实例对象都有constructor属性,constructor属性指向prototype对象所在的构造函数,就是说指向创建这个实例的构造函数。
constructor本来是原型对象上的属性,指向构造函数。但是根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,因此,实例对象也是能使用constructor属性的。constructor属性是可以被修改的,会导致检测出的结果不正确
(六)duck type
利用具体类型的特征进行判断。 比如不知道一个对象是不是数组,可以判断它的length是不是数字,它是不是有join,push这样一些数组的方法。通过一些特征判断对象是否属于某些类型,这个有时候也常用。部分可以参考JavaScript和ES6中字符串、数组对象的比较点击打开链接的方法进行判断。
- 基于JS的类型检测
- js的类型检测
- js的类型检测
- 【JS】String类型的检测
- JS中类型的检测
- 学习js的笔记--检测类型
- js检测访问设备的类型
- js 类型检测
- js数组类型检测
- js类型检测
- JS类型检测
- js 类型检测
- js检测类型
- JS中的类型检测
- JS检测类型
- JS检测设备类型
- JS类型检测-笔记
- 【JS】类型检测
- shell脚本积累
- Python字符串操作
- 深度对抗学习在图像分割和超分辨率中的应用
- 斯坦福大学机器学习笔记——机器学习基础以及有监督学习和无监督学习举例说明
- 将光源信息应用到立方体(一)
- 基于JS的类型检测
- golang,使用类型断言的一个例子
- 【51Nod1382】捡石子
- HCE
- python Day2基础知识
- 式服务框架HSF学习
- 点击空白处关闭软件盘
- 朴素贝叶斯算法原理小结
- PADS Layout制板文件和贴片文件的输出方法