浏览 2881 次
锁定老帖子 主题:各浏览器对typeof运算符的实现差异
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-22
最后修改:2011-03-18
1,IE6/7/8中typeof运算符对BOM对象如window,document,location,history等对象的方法错误的返回“object”,标准浏览器都返回“function”。
alert(typeof window.alert); alert(typeof document.write); alert(typeof document.getElementById); alert(typeof document.getElementsByTagName); alert(typeof location.reload); alert(typeof history.go);
2,Safari/Chrome对正则对象错误的返回function,其它浏览器返回object
var bb = new RegExp('bb'); alert(typeof /aa/);// --> function alert(typeof bb);// --> function
3,Safari对NodeList返回function,其它浏览器返回object
var nodes1 = document.body.children nodes2 = document.body.childNodes; alert(typeof nodes1); alert(typeof nodes2);
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-07-23
也许IE6/7/8觉得 function也是 object,所以马马虎虎了
|
|
返回顶楼 | |
发表时间:2010-07-27
试了一下FireFox,全部都返回Function,至于IE6返回的Object就看不懂了
|
|
返回顶楼 | |
发表时间:2010-07-28
ie的东西就是得够个性
|
|
返回顶楼 | |
发表时间:2010-07-28
说来说起,还是当年微软自恃垄断老大,没有尽力的去推IE成为标准
否则也不会有现在几个什么标准,可笑 |
|
返回顶楼 | |
发表时间:2010-07-29
ie6-8 把 function 分析为 object 类型.
var fun = new function(){} window.onload = function(){ alert(typeof fun); alert(typeof window.alert) alert(typeof window); } 以上弹出的值都为object,也就是说,ie6-8还没有把function当做一个类型来应用,只是我们可以这样用。 |
|
返回顶楼 | |
发表时间:2011-01-17
日,ie sucks
|
|
返回顶楼 | |
发表时间:2011-01-17
fengchong719 写道 ie6-8 把 function 分析为 object 类型.
var fun = new function(){} window.onload = function(){ alert(typeof fun); alert(typeof window.alert) alert(typeof window); } 以上弹出的值都为object,也就是说,ie6-8还没有把function当做一个类型来应用,只是我们可以这样用。 new出来的肯定是对象 哈哈 alert 是ie 错了 window 就是对象啊 new Window() |
|
返回顶楼 | |
发表时间:2011-02-06
一句话,JS中对象分内部和外部两种,我从来不像讨论JS内部对象的类型一样,来严格的讨论JS外部宿主对象的类型系统的。对JS这种弱类型语言来说,外部对象可以通过实现语言的类型系统来混淆JS中的任何类型。
|
|
返回顶楼 | |
发表时间:2011-02-06
漏掉两个字,修正如下:
一句话,JS中对象分内部和外部两种,我从来不像讨论JS内部对象的类型一样,来严格的讨论JS外部宿主对象的类型系统的。对JS这种弱类型语言来说,外部对象可以通过引擎实现语言的类型系统来混淆JS中的任何类型。 |
|
返回顶楼 | |