You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:18:13