js维护性技巧——检测数据

105 阅读1分钟

检测原始值

对于字符串,typeof

使用typeof运算符
字符串"string"
数字"number"
布尔值"boolean"
undefined"undefined"
null"object"

检测引用值

这个时候使用typeof运算符已经力不从心了,因为所有对象都会返回"object"

使用typeof运算符
{ }"object"
[ ]"object"
new Date()"object"
new RegExp()"object"

检测引用值的类型最好的方法是使用instanceof运算符,它不仅能检测构造这个对象的构造器,还能检测原型链,而每个对象都继承自Object,因此每个对象的value instanceof Object都会 返回true

语法:value instanceof constructor

使用instanceof运算符比较输出
{ }objecttrue
[ ]Arraytrue
new Date()Datetrue
new RegExp()RegExptrue

检测函数

从技术上讲,javascript中的函数是引用类型,同样存在Function构造函数,每个函数都是其实例。

例如: 函数 instanceof Function 结果为true

检测函数的最好方法是使用typeof,因为它可以跨帧使用

检测属性

不好的写法: object[name],object[name]!=null,object[name]!=undefined

以上写法其实是检测值是什么,而不是检测值是否存在,所以当属性值为假值时会出错,最好的方法是使用in运算符

如果想检查实例对象的某个属性是否存在,则使用hasOwnProperty()方法,实例中存在这个属性则返回true,只存在于原型里则返回false