在nodejs中console.log一个class实例对象时,对象中的Proxy出现了额外的get访问
class Test {
constructor() {
this.test = new Proxy({ foo() {} }, {
get(target, name) {
console.log('name: ', name);
},
});
}
}
const test = new Test();
console.log(test);
/*
name: Symbol(nodejs.util.inspect.custom)
name: Symbol(Symbol.toStringTag)
name: Symbol(Symbol.iterator)
Test { test: { foo: [Function: foo] } }
*/
在浏览器中运行以上代码不会出现这些额外的get访问
为什么会出现这种情况?有没有办法避免?
环境:Nodejs v11.14.0
win10 x64 1809
1 回复
找到原因了。。。
console.log(test) - constructor.js
- formatWithOptions(inspectOptions, test) - inspect.js
- inspect(test, inspectOptions) - inspect.js
- formatValue(ctx, value <- test, 0) - inspect.js
const maybeCustom = value[customInspectSymbol];