**:
特徵:混淆後會多出乙個變數,兩個函式。
函式方法名和變數名會替換為16進製制數,先定義乙個符號陣列:
var _0x30bb = ['log', 'hello\x20world!'];
再定義兩個函式,第乙個函式用於對符號陣列順序的干擾
(function (_0x38d89d, _0x30bbb2)
};_0xae0a32(++_0x30bbb2);
}(_0x30bb, 0x153));
第二個函式用於實際**解析:
var _0xae0a = function (_0x38d89d, _0x30bbb2) ;
實際**中的符號被替換為第二個函式:
console[_0xae0a('0x1')](_0xae0a('0x0'));
源函式和混淆後的樣子基本不變,僅對符號做混淆:
// 混淆後原始程式變為:
function hi() hi();
// 原始程式
function hi()
hi();
特徵:預設情況,三者會壓縮**,google closure compiler在壓縮時會做簡單的優化。
uglifyjs的高階模式可以將壓縮後的**進行變數替換,
google closure compiler的高階模式可以將**精簡到最簡,類似於編譯器優化。
會在原始基礎上生成乙個物件
參考資料
js物件 屬性特徵 和 物件特徵
物件是可變的,我們通過引用而非值來操作物件。如果變數x是指向乙個物件的引用,那麼執行 var y x 變數y也是指向同乙個物件的引用,而非這個物件的副本。通過變數y修改這個物件也會對變數x造成影響。物件最常見的用法是create set query delete test enumerate 它的屬...
JS容易混淆的call apply和bind方法
詳情描述 共同點call 定義 呼叫乙個物件的乙個方法,用另乙個物件替換當前物件 理解 method1.call method2,num1,num2 method1 num1,num2 即用method1替換method2 例子 function animal function dog var an...
vm模板渲染和js瀏覽器混淆的問題
今天在編寫程式的時候發現了個非常奇怪的問題,自己弄亂了個東西,velocity模板渲染的時間問題,以及瀏覽器中velocity渲染要檢查的東西。比如 s1 不能被渲染,因為當使用者輸入瀏覽器位址 html請求時,velocity模板渲染會將vm檔案中可以被渲染的東西進行渲染,然而s1這種格式 vel...