为什么要重写typeof方法?

  typeof 可以准确的判断除object以外的基础数据类型,但不能区分object类型的具体类型,比如 Array 、Date、NULL、NaN 以及自定义类。

     

观察上面的结果:

  1. typeof NaN的结果是number,可以通过isNaN()来判断(存在局限性,详情点击查看
  2. typeof []的结果是object,可以通过Array.isArray()来判断(存在局限性,详情点击查看
  3. typeof null的结果是object

重写typeof代码:

// 该方法不包含NaN的类型判断
function myTypeOf (target) {
var template = {
'[object Array]': 'array', // 数组
'[object Object]': 'object', // 对象
'[object Number]': 'number - object', // 数据对象(用new Number()定义出来的)
'[object Boolean]': 'boolean - object', // 用new Boolean()定义出来
'[object String]': 'string - object' // 用new String()定义出来的
}
if (target === null) {
return "null"
} else if (typeof(target) === 'object') {
// 返回object时具体区分
var str = Object.prototype.toString.call(target);
return template[str]
} else {
// 原始值
return typeof(target);
}
}

最新文章

  1. html与htm区别
  2. iOS使用Safari调试UIWebView
  3. 20个很有用的PHP类库
  4. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
  5. TCP/IP详解学习笔记(8)-DNS域名系统
  6. dhcp源码编译支持4G上网卡
  7. Android 正则表达式匹配汉字中文
  8. SQL 插入查询的最大ID 号 进行批量
  9. Python 函数 切片 迭代 列表生成器
  10. 根据key存不存在查询json
  11. Volley图片加载并加入缓存处理(转自http://blog.csdn.net/viewhandkownhealth/article/details/50957024)
  12. Django 中 form 介绍
  13. [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP)
  14. 北航学堂Android客户端Beta阶段发布说明
  15. mysql的安装和配置
  16. Mysqldump 参数大全
  17. Jmeter学习—004—使用代理录制脚本—HTTP代理服务器(APP、web皆可)
  18. destoon源码解读
  19. eclipse,myeclipse综合
  20. [C#]C#彩色扭曲验证码

热门文章

  1. angular清空node_modules
  2. tarsgo初探
  3. python map、join函数
  4. Jmeter 测试结果分析之聚合报告简介
  5. Vue集成openlayers
  6. python连接Oracle的方式以及过程中遇到的问题
  7. 前端开发:mock.js的简单应用(生成随机数据,拦截 Ajax 请求)
  8. Azure IoT Hub 十分钟入门系列 (1)- 10分钟带你了解Azure IoT Hub 并创建IoT Hub
  9. SQL - 各种joins
  10. Java编译器的常量优化