DOM操作 - 为什么removeChild()方法而不是remove()?

时间:2012-11-10 19:07:18

标签: javascript dom

  

可能重复:
  Why does removeChild need a parent node?

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

myNodeToRemove.parentNode.removeChild(myNodeToRemove);

为什么浏览器没有使用更加面向对象的方式实现remove方法:

myNodeToRemove.remove();

remove()方法从以下开始:

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

实际上,使用这种方式,无需手动获取节点的父节点。

2 个答案:

答案 0 :(得分:1)

问题:

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

myNodeToRemove.remove();

...您需要学习Javascript历史,语言是如何诞生的,API是如何诞生的等等。然后你就会明白我们如何最终得到了名为modern web的clusterfuck。历史很有趣。

开始的好地方是在Javascript视频上观看Crockford

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

关于功能命名和面向对象的实践,这是一个很好的视频:

http://vimeo.com/43380467

答案 1 :(得分:0)

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