【发布时间】:2017-09-17 09:27:09
【问题描述】:
伪造命名空间层次结构的流行方法:
class Stem {};
Stem.Branch = class extends Stem {};
Stem.Branch.Twig = class extends Stem.Branch {};
Stem.Branch.Twig.Leaf = class extends Stem.Branch.Twig {};
让我们对一个实例进行一些自省。以下具有“错误”/意外结果(可能会一直攀升,直到找到名称):
» (new Stem.Branch.Twig).constructor.name
"Stem"
我可以为类表达式附加一个名称:
Stem.Branch.Twig = class Stem.Branch.Twig extends Stem.Branch {};
但这是一个语法错误,标识符不能包含点,并且引用没有帮助。没有点,它至少对人类有用,但对计算机来说却毫无用处:
Stem.Branch.Twig = class StemBranchTwig extends Stem.Branch {};
» (new Stem.Branch.Twig).constructor.name
"StemBranchTwig"
我想在定义后弄乱类名,以便实例的构造函数名称显示为我想要的,但我不知道如何。
【问题讨论】:
-
“但是对计算机来说相当没用” 你希望计算机对类名做什么?
标签: javascript ecmascript-6 classname