为什么多个DOM节点类型映射到相同的数值?

时间:2019-05-09 15:07:15

标签: javascript dom

从DOM Enlightenment(http://domenlightenment.com/#1.2)一书中了解DOM节点对象类型时,我发现将多个对象类型映射到相同的数值很奇怪。例如,ELEMENT_NODEDOCUMENT_POSITION_DISCONNECTED映射到1ATTRIBUTE_NODEDOCUMENT_POSITION_PRECEDING映射到2,依此类推。您可以运行

for(var key in Node){
    console.log(key,' = ' + Node[key]); 
};

查看所有受支持的节点对象类型及其数值的列表。

有人可以帮我理解为什么多个节点对象类型映射到相同的数值吗?

1 个答案:

答案 0 :(得分:1)

先前的值ELEMENT_NODEATTRIBUTE_NODE表示节点类型(mdn)。后者DOCUMENT_POSITION_DISCONNECTEDDOCUMENT_POSITION_PRECEDING通过Node​.compare​Document​Position()mdn)来指示位置。

本质上,将它们映射为相同的值是可以接受的,因为它们表示不同的枚举/含义。

再举一个例子,如果您正在设计一个动物园系统,可以让一个枚举tiger: 1, monkey: 2, elephant: 3, penguin: 4和另一个(bit-)枚举{status_hungry: 0, status_thirsty: 2, status_happy: 4}的值重叠是可以的,因为不会有单个字段希望能代表两者。