1 回答
TA贡献1842条经验 获得超12个赞
更新:
在提出此问题时,VS Code 的内置 JavaScript 调试器不支持私有类字段的调试。从版本 1.56.0(2021 年 4 月)开始,现在是这样。
旧答案:
VS Code 的内置 JavaScript 调试器 ( ms-vscode.js-debug ) 尚不支持私有类字段。( github上有一个功能请求)
然而,v8 确实有一个(目前处于实验状态)读取私有类字段的方法。我制作了一个概念验证项目 ( leonardoraele/private-field-inspect ),它使用 Node 的检查器 API在运行时以编程方式打开调试会话以读取变量的内容。(这不会中断运行时执行)
它有效,但有一些警告。
用法:
import inspect from '../path/to/private-field-inspect';
class Subject
{
publicValue = 'not so secret';
#secretValue = 'my secret';
}
const subject = new Subject();
inspect(subject)
.then(console.debug);
输出:
{ publicValue: 'not so secret', '#secretValue': 'my secret' }
上面的解决方法对我来说并不令人满意,因此我认为最好尽可能避免使用私有类字段,直到调试器正确支持它们。相反,使用符号来隐藏私有变量。
例子:
// my-class.js (or .msj)
const PRIVATE = {
SECRET_VAL = Symbol('#secretVal');
};
export default class Subject {
// ms-vscode.js-debug can read it, but other modules can't
[PRIVATE.SECRET_VAL]: 'my secret';
doSomething()
{
const secret = this[PRIVATE.SECRET_VAL];
// ...
}
}
添加回答
举报