Javascript:如何从window.navigator正确删除属性?

问题描述 投票:0回答:2

问题:如何从appName对象中删除window.navigator属性(例如)?

console.log(window.navigator.hasOwnProperty("appName"));
// -> false

console.log(window.navigator.__proto__.hasOwnProperty("appName"));
// -> true

console.log(Object.getOwnPropertyDescriptor(navigator.__proto__, "appName"));
// -> {set: undefined, enumerable: true, configurable: true, get: ƒ}

问题:

  1. 没有像Object.deleteProperty这样的功能(但是有Object.defineProperty
  2. 我无法直接初始化Navigator对象(“非法构造函数”错误)
  3. 我无法创建新对象,只是将其__proto__属性设置为window.navigator.__proto__(请求新对象的appName属性将导致“非法调用”错误)。

谢谢。

javascript navigator
2个回答
0
投票

无法删除(或更改)window.navigator的任何属性,因为它是由Web浏览器创建和管理的只读对象。


0
投票

由于该属性归navigator原型所有,您需要从原型中删除此属性。

仅在Chrome中测试。这可能无法在其他浏览器中使用],因为大多数与DOM相关的对象都是外来的。

console.log(window.navigator.appName)

delete Object.getPrototypeOf(window.navigator).appName;

console.log(window.navigator.appName)
© www.soinside.com 2019 - 2024. All rights reserved.