ie为什么割裂html元素与Object之间的关联?

任何一个html元素的typeof都是object,但是你给Object.prototype下面挂载的属性方法不会挂到html元素下.

例1:

>>> HTMLElement.prototype.test=function(){alert(1)}
function()
>>> document.getElementsByTagName("body")[0].test()
这代码在ff下工作,但是我知道ie保护了HTMLElement对象,并且ie下压根没有HTMLElement对象,但是typeof document.getElementsByTagName("body")[0]还是object吧,那看下面

例2:

Object.prototype.test=function(){alert(1)};
[].test();
这段代码在ie和ff下都可以工作,好,再看下面

例3:

Object.prototype.test=function(){alert(1)};
document.getElementsByTagName("html")[0].test();
但是这个代码就只能在ff下运行,而ie会报没有该方法,但是typeof document.getElementsByTagName("html")[0]明明是object,太怪异了.虽然我知道后面挂prototype可以

例4:

var e=new function(){this.test=function(){alert(1)};};
document.getElementsByTagName("html")[0].prototype=e
document.getElementsByTagName("html")[0].prototype.test();
难道ie会保护html元素,所有的DOM元素虽然类型也是object但是并不继承自Object对象。。。。。。。。。。ie总不能把DOM和语言彻底分离了吧

还有发现ajaxcn首页最下面的copyright哪个html特殊字符由于前面img里面的alt的>>没写成>所以没显示出来 .

ie的dom和js完全不同,所有html element没有构造函数,更谈不上继承原形属性了,所以想从原形上面扩展html element是不可能的在ie上

相关文章

随机推荐:

相关链接

helloajax.com
专注Ajax、Asp.Net、JavaScript技术