【发布时间】:2023-01-07 14:28:39
【问题描述】:
我正在创建一个更改指纹的实用程序。使用 Object.defineProperty 更改的值不会导致 TypeError,就像我引用原始对象时那样。由于此功能,安全系统了解我正在更改值。
我改变值如下(屏幕只是一个例子,我改变了很多值,所以我需要一个通用的解决方案来解决所有这些问题)
const proto = Screen.prototype;
const propName = 'availHeight';
const descriptors = Object.getOwnPropertyDescriptor(Screen.prototype, 'availHeight');
const overrideDescriptors = {
get: () => 1000
}
Object.defineProperty(proto, propName, {
...descriptors,
...overrideDescriptors
});
应该是:
typeof Screen.prototype.availHeight; VM88:1 Uncaught TypeError: Illegal invocation at <anonymous>:1:25。
当值改变时会发生什么:
typeof Screen.prototype.availHeight; 'number'。
我该如何解决这个问题,以便这个检查与原始值一样导致 TypeError?
【问题讨论】:
标签: javascript