在阅读DOM Enlightenment(http://domenlightenment.com/#1.2)一书中有关DOM节点对象类型的信息时,我发现多个对象类型映射到相同的数值很奇怪。例如,ELEMENT_NODE
和DOCUMENT_POSITION_DISCONNECTED
映射到1
,ATTRIBUTE_NODE
和DOCUMENT_POSITION_PRECEDING
映射到2
,等等。你可以运行
for(var key in Node){
console.log(key,' = ' + Node[key]);
};
以查看所有受支持的节点对象类型及其数值的列表。
有人可以帮我理解为什么多个节点对象类型映射到相同的数值吗?
以前的值ELEMENT_NODE
和ATTRIBUTE_NODE
表示节点类型 (mdn)。后者,DOCUMENT_POSITION_DISCONNECTED
和DOCUMENT_POSITION_PRECEDING
通过Node.compareDocumentPosition()
(mdn)指示位置。
从本质上讲,将它们映射到相同的值是可以接受的,因为它们表示不同的枚举/含义。
再举一个例子,如果你正在设计一个动物园系统,那么有一个枚举tiger: 1, monkey: 2, elephant: 3, penguin: 4
和另一个(位)枚举{status_hungry: 0, status_thirsty: 2, status_happy: 4}
在值上重叠是可以的,因为没有一个字段可以同时表示两者。