JavaScript中常用的几种类型检测方法

javascript中类型检测方法有很多:

  • typeof
  • instanceof
  • Object.prototype.toString
  • constructor
  • duck type

1、typeof

最常见的就是typeof:

JavaScript中常用的几种类型检测方法

 比较特殊的是typeof null返回“object”

历史原因,规范尝试修改typeof null返回“null”修改完大量网站无法访问,为了兼容,或者说历史原因返回"object"。

2、instanceof

基于原型链操作。obj instanceof Object

左操作数为对象,不是就返回false,右操作数必须是函数对象或者函数构造器,不是就返回typeError异常。

原理:判断左边的左操作数对象原型链上是否有右边这个构造函数的prototype属性

JavaScript中常用的几种类型检测方法

任何一个构造函数都有一个prototype对象属性,这个对象属性将用作new出来的对象的原型。

bosn instanceof Person的时候发现bosn的原型也就是Student.prototype不等于Person.prototype,所以原型链还会向上查找,bosn的原型的原型等于Person.prototype所以返回true。

JavaScript中常用的几种类型检测方法

instanceof在判断对象是不是数组,Data,正则等时很好用。

JavaScript中常用的几种类型检测方法

instanceof不同window或iframe之间的对象类型检测不能使用instanceof!

3、Object.prototype.toString

JavaScript中常用的几种类型检测方法

需要注意的是IE6/7/8中 Object.prototype.toString.apply(null)返回“[object Object]”。

4、constructor

JavaScript中常用的几种类型检测方法

任何对象都有constructor属性,继承自原型的,constructor会指向构造这个对象的构造器或者构造函数。

constructor可以被改写,所以使用要小心。

总结

JavaScript中常用的几种类型检测方法

JavaScript中常用的几种类型检测方法

参考:https://www.cnblogs.com/starof/p/6368048.html

上一篇:Underscore.js 常用类型判断以及一些有用的工具方法


下一篇:javascript类型与类型检测