日期:2014-05-16  浏览次数:20319 次

javascript里的类(对象)的层次结构是什么样子的,为什么一会html一会xml?
JS貌似没有类的概念, 所有JS的入门资料里讲的都是xxx对象. 但是这个对象有个非常奇怪的地方, 他能具备其它对象才有的成员属性.我经常会遇到这种让人摸不着头脑情况. 看人家的代码,看到某某对象带上了一个没见过的属性(或方法),去翻资料,不对啊,默认js的该对象明明没有这个属性啊.再一查,哦,是xml dom里的某像的属性.但是我这明明是html. 怎么会和xml扯上关系呢.换言之js里的对象到底有没有所谓的继承关系,就和现在大部分面向对象语言那样的类继承关系?这样至少我查某个对象有哪些成员时不会像现在这么摸不到头脑

------解决方案--------------------
你的问题是没清楚js的对象模型,
js对象模型是集合,可以随意往集合中添加成员,所以任何类型的js对象带上构造时没有的属性都是正常的,合法的
比如Array对象:
var arr=new Array();
arr.a='a';
alert(arr.a);
明白了么?资料不会告诉你数组拥有a成员,但你往数组对象中添加a成员是符合js语法的;
你要找对象成员的来源,对象的成员来自两种方式:
1.直接给对象集合添加某成员,比如  构造函数或方法中 this.xx=xx 以及对象外部 obj.xx=xx
2. 原型链上的成员,比如 function test(){};test.prototype.xx=xx;这样所有 通过new test()得到的对象都可以访问xx成员
------解决方案--------------------
引用:
这个说法还是太笼统了,我是不是可以认为html里可以应用xml dom document的所有属性呢?
xml随意增加属性是什么意思?这不太科学,难道说你能把href属性增加到一个非a标签上?

完全可以把href放在一个非a标签上。
加些奇奇怪怪的标签都可以。
就像这样

<div id="test" href="" IsShow="true" type="box"></div>

使用时:

var test = document.getElementById("test");
var type= test.getAttribute("type");//href IsShow
alert(type);