当我从 VSCode 中的代码库(打字稿)添加这个特定的预先存在的变量时,我可以看到一些属性呈褪色,一些属性呈正常颜色。该变量的类型为
any
。我还不知道它的结构。
褪色的是什么意思?
我还观察到,如果我使用
JSON.stringify
打印变量,则只会打印正常的颜色属性。我尝试过递归JSON.stringify
,但打印出来的结果是一样的。可以在代码中查询褪色的颜色属性,并且它们返回正确的值,例如error.options
。
如何打印整个结构?
我用谷歌搜索,但找不到任何答案。
灰色属性是那些不可枚举且不可获取的属性。
通过以下快速实验:
const foo = Object.create(null, {
const b = {a:1,b:2,c:3};
const c = Object.create(b, {
a: {configurable:true, enumerable:true, writable:true, value:1},
b: {configurable:true, enumerable:true, writable:false,value:1},
c: {configurable:true, enumerable:false,writable:true, value:1},
d: {configurable:true, enumerable:false,writable:false,value:1},
e: {configurable:false,enumerable:true, writable:true, value:1},
f: {configurable:false,enumerable:true, writable:false,value:1},
g: {configurable:false,enumerable:false,writable:true, value:1},
h: {configurable:false,enumerable:false,writable:false,value:1},
i: {configurable:true, enumerable:true, get(){return 1;}},
j: {configurable:true, enumerable:false,get(){return 1;}},
k: {configurable:false,enumerable:true, get(){return 1;}},
l: {configurable:false,enumerable:false,get(){return 1;}},
});
c
、d
、g
和 h
变暗。
果然,查看源代码,这就是它要检查的内容。 https://github.com/microsoft/vscode-js-debug/blob/a8859b0435a9e8cbfe5a123359827674fa5d9de3/src/adapter/variableStore.ts#L481.