国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js 奇葩技巧之隱藏代碼

2019-11-19 15:50:23
字體:
來源:轉載
供稿:網(wǎng)友

昨天在群看到有人發(fā)了個文章叫《“短”化你的代碼》,思路非常不錯,采用unicode的零寬字符來實現(xiàn)字符隱藏,雖然有字符,可是你卻看不見它。
這篇文章詳細的介紹了這種方法的實現(xiàn)原理,最后還給出了一個生成工具。

當然,作者算了留了一個小小的練習給我們,因為他只用了兩個字符,導致轉換后的數(shù)據(jù)是原始數(shù)據(jù)的 8倍。
他給我們提供了4個零寬字符,我們就可以縮小至4倍。

好了,我們來看下代碼吧。

(function(window) { var rep = { // 替換用的數(shù)據(jù),使用了4個零寬字符,數(shù)據(jù)量減少了一半。  '00': '/u200b',  '01': '/u200c',  '10': '/u200d',  '11': '/uFEFF' }; function hide(str) {  str = str.replace(/[^/x00-/xff]/g, function(a) { // 轉碼 Latin-1 編碼以外的字符。   return escape(a).replace('%', '//');  });  str = str.replace(/[/s/S]/g, function(a) { // 處理二進制數(shù)據(jù)并且進行數(shù)據(jù)替換   a = a.charCodeAt().toString(2);   a = a.length < 8 ? Array(9 - a.length).join('0') + a : a;   return a.replace(/../g, function(a) {    return rep[a];   });  });  return str; } var tpl = '("@code".replace(/.{4}/g,function(a){var rep={"/u200b":"00","/u200c":"01","/u200d":"10","/uFEFF":"11"};return String.fromCharCode(parseInt(a.replace(/./g, function(a) {return rep[a]}),2))}))'; window.hider = function(code, type) {  var str = hide(code); // 生成零寬字符串  str = tpl.replace('@code', str); // 生成模版  if (type === 'eval') {   str = 'eval' + str;  } else {   str = 'Function' + str + '()';  }  return str; }})(window);

大家可以通過最簡單的代碼例子進行測試一下,看看效果如何,也可以進一步優(yōu)化,或者寫成插件什么的,就當練習吧。。
雖然這個東西沒什么實際用處,不過有時候玩玩還是不錯的,可出面試題嚇唬新人哦。。

以上就是小編為大家整理的js 奇葩技巧之隱藏代碼,希望對大家有所幫助!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 张家口市| 乡宁县| 克东县| 河东区| 邛崃市| 津南区| 屯留县| 宝兴县| 四子王旗| 高安市| 祁东县| 勐海县| 岫岩| 舟曲县| 麻栗坡县| 宝鸡市| 阳新县| 金华市| 鄯善县| 湖北省| 广汉市| 鸡西市| 隆回县| 镇雄县| 西青区| 金寨县| 麻城市| 遂平县| 凤山县| 陆良县| 临清市| 万载县| 泉州市| 抚顺市| 新沂市| 宜良县| 澜沧| 阜康市| 吴江市| 东明县| 永城市|