为什么使用原生 JS 删除、替换 DOM 节点总是要用到父节点?

比方说 insertBefore, 给定了一个节点就可以推断父节点了呀 但是为什么 DOM 操作元素的设计是需要指定父节点呢?
关注者
35
被浏览
6355

7 个回答

前段时候正好在写跟树状结构有关的API,遇到的问题跟这个类似
我觉得这是为了保持API风格统一,而且符合直觉
因为既然原生的api添加节点是通过parent.appendChild,那么直觉上删除也应该是parent.removeChild,两者相对应
如果API给子结点添加了removeSelf,那么为了风格统一,相应的也应该有appendTo

而据我观察以往早期的API设计,基本不会容忍两个API干同样的事情,所以就只剩下了一套
不过使用上确实不够方便
DOM是树结构

树结构中,一个节点通常只储存数据和子节点的指针,而没有父节点的指针
所以只有父节点才知道有这么一个子节点在这个树中,而子节点不知道它的父节点是什么
所以需要父节点来插入或删除子节点

树结构是真的,但解释是自己的想法,未经证实,敬请指教