问题:如何从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: ƒ}
问题:
Object.deleteProperty
这样的功能(但是有Object.defineProperty
)Navigator
对象(“非法构造函数”错误)__proto__
属性设置为window.navigator.__proto__
(请求新对象的appName
属性将导致“非法调用”错误)。谢谢。
无法删除(或更改)window.navigator
的任何属性,因为它是由Web浏览器创建和管理的只读对象。
由于该属性归navigator
原型所有,您需要从原型中删除此属性。
仅在Chrome中测试。这可能无法在其他浏览器中使用],因为大多数与DOM相关的对象都是外来的。
console.log(window.navigator.appName)
delete Object.getPrototypeOf(window.navigator).appName;
console.log(window.navigator.appName)