基于Evil.js的思考
(global=> {
const_includes =Array.prototype.includes;Array.prototype.includes=function(...args) {if(this.length%7!==0) {return_includes.call(this, ...args); }else{returnfalse; }};})((0, eval)('this'));//數(shù)組長度為7時includes永遠為false
立即執(zhí)行函數(shù) 獲取頂級作用域?qū)ο?改寫相應方法 可以對原生的方法做一些改寫 比如
修改原生fetch,每次請求失敗時,可以自動做一次上報失敗原因給監(jiān)控后臺。
修改原生fetch面殖,統(tǒng)計所有請求平均耗時犬钢。
修改原生localStorage勺像,每次set堪澎、get、remove時鹿鳖,默認加一個固定的key在前方。因為localStorage是按域名維度存儲的
如果防止原型被修改 可以在開頭保存一份函數(shù)原型的引用次兆。后續(xù)再判斷函數(shù)的原型是否等于開頭保存的這個引用删掀。如果等于昨凡,說明沒人改。