我的Javascript代码动态生成一堆ES2015类,包括自定义名称:
const EntitySubclass = class extends Entity {};
Object.defineProperties(EntitySubclass, {
name: { value: dynamicClassName }
});
这在代码本身中工作正常。 CustomClass.name
返回预期的名称。但是,当在Chrome控制台或调试器中显示时,其中一个类始终称为EntitySubclass
。我也试过这个:
const obj = { [dynamicClassName]: class extends Entity {} };
const EntitySubclass = obj[dynamicClassName];
和此:
const obj = {};
obj[dynamicClassName] = class extends Entity {};
const EntitySubclass = obj[dynamicClassName];
但这会导致调试器显示一些自动生成的名称(_class3
)。
可以修复吗?
我正在使用Babel编译,我记得在某个地方读过这个行为取决于所使用的Babel插件。所以这是我的Babel配置:
"presets": [
"es2015"
],
"plugins": [
["babel-plugin-transform-builtin-extend", { "globals": ["Set"] }],
"transform-object-rest-spread",
"transform-decorators-legacy",
"transform-class-properties",
"transform-es2015-instanceof",
"transform-async-to-generator",
"transform-function-bind",
"syntax-flow",
"transform-flow-strip-types"
]