console.logの呼び出しを多くするスクリプトを変更できません。別のレイヤーを追加して、呼び出しに特定の文字列が含まれている場合は応答します。これはFFで動作しますが、4番目のライン上のChromeで「不正な呼び出し」エラーがスローされます:Chromeのconsole.logへの呼び出しを傍受します
var oldConsole = {};
oldConsole.log = console.log;
console.log = function (arg) {
oldConsole.log('MY CONSOLE!!');
oldConsole.log(arg);
}
任意のアイデアは、その周りを取得する方法?
(function() {
var log = console.log;
console.log = function() {
log.call(this, 'My Console!!!');
log.apply(this, Array.prototype.slice.call(arguments));
};
}());
素敵で...このような何かを探して:
あなたは、このようなコンソールの各機能(およびためすべてのブラウザ)の振る舞いを再定義することができます。これはjavascriptの任意の関数を装飾するために使用できますか? – Shane
@Shane、これは関数呼び出しをインターセプトするための基本的なパターンですが、絶対に必要でない限り、これを使用することをお勧めします。関数を直接変更するだけでなく、OOPの概念を使用する方がはるかに優れています。 – zzzzBov
コンポーネントのランタイムアセンブリがたくさんあるフレームワークを構築すると、コンポーネントをデバッグしたり、既存のコンポーネントをプラグインなどで変更したりする外部駆動型の方法として便利なツールになります。欠点が何であるかだけに興味があります。組み込み関数を変更するのではなく、フレームワークコンポーネントのメソッドのみを変更します。 – Shane