在JavaScript中更改主机对象的原型函数?

时间:2012-06-29 20:12:07

标签: javascript dom prototype

每次调用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”不会打印到控制台,也不打印新原型函数中的任何代码。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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