重写原生js removeChild方法

1、基础回顾

Node.removeChild() 方法从DOM中删除一个子节点。

返回被删除的节点。如果节点不存在则返回 null。

let oldChild = node.removeChild(child);

如果想要在removeChild方法里多做一点事情,那么就需要重写removeChild了。

需要知道的两点是:

1)它是Node原型上的方法,通过打印Node.prototype可以看到;
2)它的返回值。

了解了这两点,重写它就一点也不难啦!

2、顺便记一个搜索小技巧

如果这两点也是不了解的,那么,直接在搜索引擎上搜 关键字 + 空格 + mdn,像这样removeChild mdn,搜出来的内容就是官方文档且十分一目了然啦!

3、重写removeChild方法

const removeChildFn = Node.prototype.removeChild;

Node.prototype.removeChild = function (n) {
  console.log('待删除的节点', n);
  
  if(!n) {
    return null;
  }

  // 例如,节点为注释节点或节点属性type=text/css时不删除
  const isBreak = (n.nodeType === 8) || (n.getAttribute('type') === 'text/css'); 
  if(isBreak ) {
    return null; // 不删除
  }
  
  return removeChildFn.call(this, n); // 正常删除
}

ok,这样就写好啦,重写其他方法也是一样的

posted @ 2022-05-15 21:52  近距离  阅读(311)  评论(0编辑  收藏  举报