typeof方法重写(区分数组对象)
2024-09-25 09:44:55
为什么要重写typeof方法?
typeof 可以准确的判断除object以外的基础数据类型,但不能区分object类型的具体类型,比如 Array 、Date、NULL、NaN 以及自定义类。
观察上面的结果:
typeof NaN
的结果是number,可以通过isNaN()来判断(存在局限性,详情点击查看)typeof []
的结果是object,可以通过Array.isArray()来判断(存在局限性,详情点击查看)- 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);
}
}
最新文章
- html与htm区别
- iOS使用Safari调试UIWebView
- 20个很有用的PHP类库
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
- TCP/IP详解学习笔记(8)-DNS域名系统
- dhcp源码编译支持4G上网卡
- Android 正则表达式匹配汉字中文
- SQL 插入查询的最大ID 号 进行批量
- Python 函数 切片 迭代 列表生成器
- 根据key存不存在查询json
- Volley图片加载并加入缓存处理(转自http://blog.csdn.net/viewhandkownhealth/article/details/50957024)
- Django 中 form 介绍
- [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP)
- 北航学堂Android客户端Beta阶段发布说明
- mysql的安装和配置
- Mysqldump 参数大全
- Jmeter学习—004—使用代理录制脚本—HTTP代理服务器(APP、web皆可)
- destoon源码解读
- eclipse,myeclipse综合
- [C#]C#彩色扭曲验证码