在浏览网页的时候无意中看到一个检测浏览器是否使用开发者工具方法,特此记录
代码示例:
1 (function(){2 var re=/x/;3 var i=0;4 console.log(re);5 6 re.toString=function(){7 return '第'+(++i)+'次打开控制台'8 }9 })();
原理如下:
控制台输出的内容如果是对象(包括正则表达是对象),则保留的是对象的引用,输出的
会是对象的实时值,即对象内容被改变时,能够反映其变化(前提是重新开启控制台时),
实际上是没错关闭再开启控制台的时候,重新调用对象的toString()方法。
这里改写了re对象的toString方法,并用闭包保存计数器i,每次重新打开控制台toString
方法就会自动调用,并把计数器加1。