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 に答える