這是一個很賤的技能,我在谷歌控制台源碼里看到的。
相信大家都知道,在控制台里只輸入函數名,不輸入 () 然后按回車,就可以輸出源碼。
都不會陌生吧,這也有助於我們調試,是個很棒的技巧。
不過系統內置的就會輸出 function alert() { [native code] }
比如這個。
不過當我們輸入 dir 的時候卻看到:
WTF,Command Line API ?
難道也是系統的?
以前我以為是,后來發現其實不是,而是一個js處理輸出的,防止輸出源碼的方法。
讓我們來找到他的源代碼吧。
在控制台輸入 debugger 然后按回車鍵,然后按2次F11,好,我們進入到了控制台運行環境了。
在第 1253-1273 行,就是這個函數了。有興趣的可以仔細研究下,這里就不深入分析了,我們進入下一個環節。
其實我們一句話就可以阻止任何函數輸出源碼了。
Function.prototype.toString = function toString(){ return "function " + (this.name || "anonymous") + "() { [native code] }"; }
是不是簡單方便,一次性根除所有麻煩。
這只是個障眼法而已,只是忽悠小菜用的,沒任何實際用途。
當然,你可以讓它隨機輸出一個招聘信息,或者圖文信息,裝裝逼還是不錯的。
好了,今天分享完畢,一個小東西,玩玩而已。。