2

每次调用时我都想执行一些代码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”不会打印到控制台,也不会打印到新原型函数中的任何代码,就此而言。我究竟做错了什么?

4

1 回答 1

0

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

(function(){
  var actAppendChild = Element.prototype.appendChild;
  ....
}());
于 2012-07-25T14:39:46.493 回答