typeof的一些兼容性问题
时间:2022-05-04
本文章向大家介绍typeof的一些兼容性问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
typeof存在一些兼容性的问题,在IE6,7,8中的DOM和BOM元素及其对象上的方法的判定会出现误差,在safari上对NodeList实例
的判定,对ExpReg实例的判断(早期的chrome,safari会对ExpReg实例认定为‘function’)。
分析:
之所以会在IE6,7,8对DOM和BOM元素及其方法判定错误,主要是因为在这3个版本的IE中,js引擎JScript并没有集成到IE浏览器内核
中,通过COM组件链接JScript和IE内核,浏览器实现的BOM对象或者DOM对象及其方法必须通过COM组件转换到JScript上进行操作,
转换过后的Function类型会变成Object类型。故在IE6,7,8中 typeof document.write === 'object'。
而在IE9之后,js引擎内置于核心之中,也就不需要转换数据了,此后的BOM或者DOM对象的方法的类型判定是正确的。
在Safari上,通过测试NodeList实例发现,实例的construct属性并不是函数,而是一个对象NodeListConstructor,typeof nodelist === 'function',
在其他的浏览器上,Nodelist接口继承自HTMLCollection。
综上,实现真正兼容性的typeof:
function _typeof(o){
return typeof o === 'undefined'?
undefined : typeof o === 'object' ?
(/function/i.test(o + "") ?
'function' : 'object')
: (o.constructor == RegExp || (o.constructor !== Function)) ?
'object' : typeof o
}
- 美团点评境外度假团队前端项目开发实践总结
- 在jfinal中使用druid,并配置查看权限
- java中遇到过的String的一些特性
- Kaggle案例——使用scikit-learn解决DigitRecognition问题
- 基于Kaggle数据的词袋模型文本分类教程
- javascript中遇到的字符串对象处理
- 传统企业站开发 - 页面布局
- AngularJS中使用service,并同步数据
- 2016.05 第四周 群问题分享
- angularjs中 *.min.js.map 404的问题
- Git与通过Git添加提交文件
- Facebook社交网络R语言分析
- 初次使用AngularJS中的ng-view,路由控制
- Android Hook技术防范漫谈
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python数据分析之NumPy(运算篇)
- Python数据分析之NumPy(高级篇)
- Python数据分析之Pandas(数据结构)
- Python数据分析之Pandas(数据操作)
- Python数据分析之Seaborn(样式风格)
- Python数据分析之Seaborn(配色方案)
- Python数据分析之Seaborn(变量分析绘图)
- Python数据分析之Seaborn(回归分析绘图)
- Python数据分析之Seaborn(分类分析绘图 )
- Python数据分析之Seaborn(热图绘制)
- Python数据分析之matplotlib(3D绘图)
- 一看就懂的Tensorflow实战(Tensorflow入门)
- 一看就懂的Tensorflow实战(线性回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型Eager API)