【问题标题】:Change a host object's prototype function in JavaScript?在 JavaScript 中更改宿主对象的原型函数?
【发布时间】:2012-06-29 20:12:07
【问题描述】:

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

【问题讨论】:

  • 究竟是什么不起作用?因为这里是
  • 您的代码运行良好。我在这里测试过——jsfiddle.net/9P3hr
  • 您使用的是 Internet Explorer,不是吗。
  • 旧版浏览器并不重要。也许是 IE8+
  • 它在 Firefox 中运行良好。是什么让您认为它没有工作?

标签: javascript dom prototype


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多