为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止“window.location.replace()”被覆盖?

如何防止“window.location.replace()”被覆盖?

一只斗牛犬 2023-06-09 17:27:22
我需要一种方法来防止window.location.replace()被更改/覆盖(例如:window.location.replace = function(){ return "Hi" }。起初,我尝试过Object.freeze(window.location.replace)但这没有做任何事情。
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超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


查看完整回答
反对 回复 2023-06-09
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

这里有两件事:
strict mode:允许Object.freeze防止对象被编辑。没有'严格模式',Object.freeze只能防止添加,删除。
_Object.free只能对对象中的 1 层生效。

所以解决方案是:

'use strict';
Object.freeze(window.location);


查看完整回答
反对 回复 2023-06-09
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信