我想在每次调用appendChild时执行一些代码。假设我没有办法知道在何处或何时调用它。我想我可以使用原型来做到这一点,但是它们似乎没有用:

var actAppendChild = Element.prototype.appendChild;
Element.prototype.appendChild = function(node){
    actAppendChild.call(this,node);

    //execute custom code here...
    console.log("foo");
}

document.body.appendChild(someNode);


但是,“ foo”不会打印到控制台,也不会打印到新原型函数中的任何代码。我究竟做错了什么?

最佳答案

我可以确认它即使在IE8 +,Safari,Chrome和Opera上也能正常工作。
只是一个建议:最好的做法是将代码包装在闭包中,以避免污染全局名称空间,如下所示:

(function(){
  var actAppendChild = Element.prototype.appendChild;
  ....
}());

关于javascript - 更改JavaScript中宿主对象的原型(prototype)函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11268360/

10-11 12:06