研究一個(gè)網(wǎng)站前端技術(shù)的時(shí)候,了解它的全局的對象是一個(gè)好的入口,
一般來說,常見的庫就會(huì)用外觀模式,最后暴露一個(gè)對象給用戶調(diào)用,
比如jQuery,requirejs,angular,react
均是用這種方式。
如果沒有用cmd/amd模塊化或類似webpack工具打包的話,會(huì)給全局對象window添加一個(gè)屬性,如angular:
如React
同時(shí),為了避免全局污染,也要關(guān)注全局變量的個(gè)數(shù)和詳情。
How
可以通過ES5的新增api(Object.keys)看瀏覽器全局變量列表:Object.keys(window)
發(fā)現(xiàn)一般的網(wǎng)站都有兩百多個(gè)全局變量,人力去看且需要區(qū)分是否是用戶定義的比較困難,需要一個(gè)script去列出所有的非原生的全局屬性.
開始想的是能不能防篡改對象的相關(guān)檢測api(Object.isExtensible,Object.isSealed,Object.isFrozen)來判斷是否原生api?
但并不是所有的原生對象都是seaded. 所以此方法行不通。
那么能不能有一個(gè)純凈的、沒有加載第三方庫的全局對象?
對于瀏覽器環(huán)境,我們有iframe
可以添加一個(gè)iframe,然后對比當(dāng)前的window,就可以得到詳細(xì)列表。
var iframe = document.createElement("iframe"); document.body.appendChild(iframe); Object.keys(iframe.contentWindow).length
列出非原來對象
(function(){ var iframe =
延伸閱讀
- ssh框架
2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖
2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe
2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】
2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞
2017-07-26
- 從棧不平衡問題 理解 calling convention
2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明
2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解
2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析
2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二)
2017-07-26
學(xué)習(xí)是年輕人改變自己的最好方式