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

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

1、typeof

最常见的就是typeof:

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

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

2、instanceof

基于原型链操作。obj instanceof Object

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

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

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

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

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

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

3、Object.prototype.toString

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

4、constructor

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

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

总结

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

最新文章

  1. 理清JavaScript正则表达式--下篇
  2. 洛谷P1330封锁阳光大学[二分图染色]
  3. Rails :布局和视图渲染
  4. CentOS的SSH,Putty配置说明
  5. Spring控制反转与依赖注入(IOC、DI)
  6. 解决Jenkins console输出乱码
  7. ios 用户相册
  8. C# 实现远程控制软件的关键技术
  9. awk的使用备忘
  10. 常用cl命令参数解释
  11. js与objective-c的交互-备
  12. ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序
  13. 反馈法学习设计模式(一)——策略模式Strategy Pattern
  14. css绘制倒三角
  15. 阿里云ACE共创空间——MQ消息队列产品测试
  16. Mha-Atlas-MySQL高可用方案实践(二)
  17. Spring Boot 构建电商基础秒杀项目 (十一) 秒杀
  18. kafka笔记3(生产者)
  19. 深入理解linux内核v4l2框架之videobuf2【转】
  20. C. Classy Numbers

热门文章

  1. Java爬虫的实现
  2. PLSQLDeveloper链接报错 解决办法
  3. Data Lake Analytics,大数据的ETL神器!
  4. tumblr arch information
  5. 关于python的元组操作
  6. SVG 动态添加元素与事件
  7. day36 09-Hibernate中的事务:事务处理
  8. agc015F Kenus the Ancient Greek
  9. callee和caller属性的区别
  10. arcgis几何对象