Proxy能否访问类的私有字段?问题排查与解决方案咨询
关于Proxy访问类私有字段的问题
我正在阅读MDN的Proxy文档,其中提到私有字段可以通过Proxy访问,尤其是以“To fix this....”开头的段落,但文档示例无法正常运行,我的代码及运行情况如下:
含私有字段的类代码
class Danger { #areYouSure = "magic"; grave(){ console.log("Yes, grave danger"); return true; } } module.exports = Danger;
尝试用Proxy访问私有字段的代码
const Danger = require('./testing-private'); const handler = { get(target, property, receiver){ return target[property]; } }; const dangerProxy = new Proxy(new Danger(), handler); console.log("--------------------------------------", dangerProxy.areYouSure);
运行输出
-------------------------------------- undefined
修改后的报错情况
如果将代码中的dangerProxy.areYouSure替换为dangerProxy.#areYouSure,会抛出以下语法错误:
/home/zaphod/code/math/js-experiments/src/danger-proxy.js:29 console.log("--------------------------------------", dangerProxy.#areYouSure); ^ SyntaxError: Private field '#areYouSure' must be declared in an enclosing class at Object.compileFunction (node:vm:352:18) at wrapSafe (node:internal/modules/cjs/loader:1032:15) at Module._compile (node:internal/modules/cjs/loader:1067:27) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47
请问是否有可行的解决方法,还是我的预期存在错误?
内容的提问来源于stack exchange,提问作者Kenneth Stephen
相关产品推荐
相关产品推荐

