無効化された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は演算子だった!