论坛首页 Web前端技术论坛

各浏览器对typeof运算符的实现差异

浏览 2878 次
该帖已经被评为隐藏帖
作者 正文
   发表时间: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);

 

 

 

 

   发表时间:2010-07-23  
也许IE6/7/8觉得 function也是 object,所以马马虎虎了
0 请登录后投票
   发表时间:2010-07-27  
试了一下FireFox,全部都返回Function,至于IE6返回的Object就看不懂了
0 请登录后投票
   发表时间:2010-07-28  
ie的东西就是得够个性
0 请登录后投票
   发表时间:2010-07-28  
说来说起,还是当年微软自恃垄断老大,没有尽力的去推IE成为标准
否则也不会有现在几个什么标准,可笑
0 请登录后投票
   发表时间: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当做一个类型来应用,只是我们可以这样用。
0 请登录后投票
   发表时间:2011-01-17  
日,ie sucks
0 请登录后投票
   发表时间: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()
0 请登录后投票
   发表时间:2011-02-06  
一句话,JS中对象分内部和外部两种,我从来不像讨论JS内部对象的类型一样,来严格的讨论JS外部宿主对象的类型系统的。对JS这种弱类型语言来说,外部对象可以通过实现语言的类型系统来混淆JS中的任何类型。
0 请登录后投票
   发表时间:2011-02-06  
漏掉两个字,修正如下:
一句话,JS中对象分内部和外部两种,我从来不像讨论JS内部对象的类型一样,来严格的讨论JS外部宿主对象的类型系统的。对JS这种弱类型语言来说,外部对象可以通过引擎实现语言的类型系统来混淆JS中的任何类型。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics