赞助连接

赞助连接

阅 读 文 章

javascript太NB,有人想的通吗?

[来源:网上转载 (CSDN转载) | 作者:网友(treeroot) | 时间:2008-09-13 | 浏览:人次 ]

alert(window==document);  
  alert(document==window);  
   
  结果是什么?
true   &   false  
  这个原因我狂查一阵试试。
<script   type="text/javascript">  
  for   (var   property   in   window)   {  
  if   (property   ==   "document")   alert(property);  
  }  
  //可能是因为window包括document吧。。  
  </script>
alert(window   ==   top);  
  alert(window   ==   self);
alert(window   ===   document);   //就可以啦;
不可以呀  
  alert(window==top)   true  
  alert(window===top)   false  
   
 
在IE中是TRUE,在FIREFOX中是FALSE
感觉莫名奇妙,应该是false才对,结果发现顺序不一样结果竟然不一样!
找到一个解释,是这样说的:  
   
   
  如果“==”左边的对象和右边对象是同一对象或是右边的对象的父对象,true,否则false  
   
   
 
相等运算符   (==)    
   
  如果两表达式的类型不同,则试图将它们转换为字符串、数字或   Boolean   量。    
  NaN   与包括其本身在内的任何值都不相等。    
  负零等于正零。    
  null   与   null   和   undefined   相等。    
  相同的字符串、数值上相等的数字、相同的对象、相同的   Boolean   值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。    
  其他比较均被认为是不相等的。    
   
  恒等运算符   (===)    
   
  除了不进行类型转换,并且类型必须相同以外,这些运算符与相等运算符的作用是一样的。  
 
找到一个解释,是这样说的:  
   
   
  如果“==”左边的对象和右边对象是同一对象或是右边的对象的父对象,true,否则false  
   
  这个解释说不过去。  
  如下:  
  alert(window==history)  
  alert(window==event)  
  alert(window==location)
我自己都不信这个解释。  
   
  但这是我唯一找到的一个。
我猜测:  
  alert(window==document);   相当于   alert(window.document==document);  
  而  
  alert(document==window);   相当于   alert(document.window==window);
按楼上的解析   都是返回true了
document就没有window这个对象,怎么能返回true呢?显然不能。
window  
                                  |  
        -----------------------------  
        |                         |                               |  
    history             document                   location
我想问题根源应该是来自于IE对   document对象   的处理方法的特殊 *** 吧。
看置顶帖
好像是IE的bug,FireFox没问题
alert("window:"+window.document);  
  alert("document:"+document);  
  alert(window.document==document);  
  alert(document==window.document);
接分
想不通才正常。  
  想通了太牵强。
MARK`
mark
果然强```8懂
alert(window==document);  
  alert(document==window);  
  前面的一个在IE中是true,在FF中是Flase  
  第二个在IE和FF中都是flase  
  难道说,IE中把document和window当成一样的存在了?不过有可能呢~貌似微软就是这么处理的说……  
   
   
  alert("window:"+window.document);  
  alert("document:"+document);  
  alert(window.document==document);  
  alert(document==window.document);  
   
  这个……前两个的现实内容IE和FF不一样……后面的好像一样的说……为什么前面两个不一样?
在IE中,this=window>=document  
  因为一个window里面只包含了一个document对象,  
  当执行window==document时,实际上是拿window.document和document进行比较  
  而执行document==window时,不能根据document找到window对象,  
  这是IE这样解释javascript造成的。  
  而在firefox中,他们是不同的对象,  
   
  纯属个人见解
头一次看到,原来js中也有   ===   衡等运算符。  
  使用===能够准确的说明,document和window的确不是一个对象。  
   
  "当执行window==document时,实际上是拿window.document和document进行比较"  
   
  不明白微软为什么这么处理  
 
如果是ie的bug我们想这些有意义吗
其实就是不严肃的表现。脚本吗,总是小儿科。
ls此言差矣  
  JS的门槛是比较低,但是它又远比大多数人想像的复杂
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 有人 document window alert 对象 IE window.document

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.