hook 某屬性
(function() {
//嚴謹模式 檢查所有錯誤
'use strict';
//window 為要 hook 的對象,這里是 hook 的 _signature
var _signatureTemp = "";
Object.defineProperty(window, '_signature', {
//hook set 方法也就是賦值的方法
set: function(val) {
console.log('Hook 捕獲到 _signature 設置->', val);
debugger;
_signatureTemp = val;
return val;
},
//hook get 方法也就是取值的方法
get: function()
{
return _signatureTemp;
}
});
})();
發現程序報錯,不能重新定義屬性
代碼在consle里面輸出

(function() {
'use strict';
var a = '';
Object["defineProperty"](window, "_signature", {
set: function(b) {
a = b;
return b;
},
get: function() {
return a;
}
});
}());
Uncaught TypeError: Cannot redefine property: _signature,不能重新定義 _signature?我們的 Hook 代碼在頁面一加載就運行了 Object.defineProperty(window, '_signature', {}),等到網站的 JS 再次 defineProperty 時就會報錯,那很簡單嘛,既然不讓重新定義,而且網站自己的 JS Hook 代碼不會影響 _signature,直接將其刪掉不就行了嘛!