Hatena::ブログ(Diary)

イノベートな非日常 Twitter

2014-04-15

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

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/IT7C/20140415/1397494773
リンク元