2

可能重复:
为什么 removeChild 需要父节点?

跨浏览器删除节点元素的方法是使用removeChild()方法。但是,这种方式期望我们精确地定义节点的父节点,如下所示:

myNodeToRemove.parentNode.removeChild(myNodeToRemove);

为什么浏览器没有像这样以更面向对象的方式实现 remove 方法:

myNodeToRemove.remove();

方法remove()开始如下:

function remove(){
  var parentNode = this.parentNode;
  ....
}

确实,使用这种方式,不需要手动获取节点的父节点。

4

2 回答 2

1

对于这个问题:

为什么浏览器没有像这样以更面向对象的方式实现 remove 方法

myNodeToRemove.remove();

...你需要研究 Javascript 的历史,语言是如何诞生的,API 是如何诞生的等等。然后你就会明白我们是如何结束被称为现代网络的 clusterfuck 的。历史很搞笑。

好的起点是观看 Crockford 的 Javascript 视频

http://javascript.crockford.com/#video

另外关于函数命名和面向对象的实践,这是一个很好的视频:

http://vimeo.com/43380467

于 2012-11-10T22:27:58.073 回答
0

我认为使用 parentNode 和 removeChild 组合的原因确保我们在我们希望删除的容器的实际父级上引用 removeChild 方法。

于 2012-11-10T19:29:49.390 回答