無効化されたconsole.logをもとに戻す

javascriptはプロトタイプ型なので、ネイティブなメソッドも上書きして無効化できる。
デバック出力をまとめて停止したり、解析できなくしたりすることに使われる。

console.log = function(){}

では、ネイティブのメソッドにもどすにはどうすればいいのだろうか。
答えはシンプルにdelete関数で消してあげれば、オーバーライドされたメソッドが消えて、初期化されネイティブのプロトタイプのメソッドにもどる。

delete console.log

じゃあ、プロトタイプも無効化された場合はどうなるか

console.__proto__.log = function(){}
delete console.log

ではもとにもどらないが

delete console.__proto__.log

プロトタイプもdeleteしてしまえばいい。

じゃあ、deleteメソッドが無効化された場合は?

var original_log = Object.getPrototypeOf(console).log;

でネイティブ関数を呼び出せるらしい。
が、そもそもdeleteは消せない...。というかdeleteは演算子だった!