一只斗牛犬
2023-06-09 17:27:22
我需要一種方法來防止window.location.replace()被更改/覆蓋(例如:window.location.replace = function(){ return "Hi" }。起初,我嘗試過Object.freeze(window.location.replace)但這沒有做任何事情。
2 回答

慕的地8271018
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
您可以使用Object.defineProperty使其不可寫和不可配置:
'use strict';
Object.defineProperty(
window.location,
'replace',
{ value: window.location.replace }
);
// Throws in strict mode
window.location.replace = function(){ return "Hi" };
// In sloppy mode, the above assignment will fail silently

慕田峪4524236
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個贊
這里有兩件事:
_ strict mode
:允許Object.freeze
防止對象被編輯。沒有'嚴(yán)格模式',Object.freeze
只能防止添加,刪除。
_Object.free
只能對對象中的 1 層生效。
所以解決方案是:
'use strict'; Object.freeze(window.location);
添加回答
舉報
0/150
提交
取消