在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景:

1、typeof:主要用于检测基本类型.

typeof undefined;//=> undefined
typeof 'a';//=> string
typeof 1;//=> number
typeof true;//=> boolean
typeof {};//=> object
typeof [];//=> object
typeof function() {};//=> function
typeof null;//=> object

2、instanceof:主要用于检测引用类型(左边是对象,右边是函数.根据对象的原形链往上找,如果原形链上有右边函数.prototype,返回true;否则返回false).

var obj = {}; obj instanceof Object; //=> true;
var arr = []; arr instanceof Array; //=> true;
var fn = function() {}; fn instanceof Function; //=> true;

3、Object.prototype.toString.call(sth):由于原形链的检测有漏洞(原型是可以改变的),所以会造成检测结果不准确,所以可以采用此种形式.

var toString = Object.prototype.toString;
toString.call(undefined);//=> [object Undefined]
toString.call(1);//=> [object, Number]
toString.call(NaN);//=> [object, Number]
toString.call('a');//=> [object, String]
toString.call(true);//=> [object, Boolean] toString.call({});//=> [object, Object]
toString.call(function() {});//=> [object, Function]
toString.call([]);//=> [object, Array]
toString.call(null);//=> [object, Null]

最新文章

  1. 【分布式】Zookeeper应用场景
  2. table 细边框
  3. MS SQLServer 操作XML语句的存储过程
  4. unittest可能面临的问题以及解决方法
  5. Orchard源码:Logging
  6. Hive权限控制和超级管理员的实现
  7. Android UI设计系统---LayoutParams[转]
  8. [转]Android-网络通信框架Volley使用详解
  9. 14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量
  10. Less合并
  11. JavaScript数组的22种方法
  12. ios学习- 10大iOS开发者最喜爱的类库
  13. 【luogu2161】【SHOI2009】Booking会场预约
  14. Python学习笔记 - function调用和定义
  15. hdu4966 GGS-DDU
  16. linux虚拟机网络服务问题
  17. 单片机成长之路(avr基础篇)- 003 AVR单片机的BOOT区
  18. rocketMQ基本架构简介
  19. SQL 游标 Cursor 基本用法
  20. (转)Cognos的下载地址分享

热门文章

  1. JavaScript-序列化及转义
  2. UVA.679 Dropping Balls (二叉树 思维题)
  3. 解决jsp两种提交方式乱码 的方法
  4. 爬虫实例——爬取淘女郎相册(通过selenium、PhantomJS、BeautifulSoup爬取)
  5. HDU2647 topsort
  6. STL中的map和unordered_map
  7. BroadcastReceiver学习
  8. tools:context=".MainActivity的作用
  9. zoj 1729 Hidden Password
  10. Linux系统关闭防火墙端口