1 回答

TA貢獻1842條經驗 獲得超13個贊
更新:
在提出此問題時,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];
? ? ? ? // ...
? ? }
}
添加回答
舉報