重写原生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,这样就写好啦,重写其他方法也是一样的