似乎可以将类嵌套在构造函数中,然后可以从类中的任何位置实例化,这是官方的吗?
[编辑] 例如,
class C {
constructor() {
class D {
constructor() { }
}
}
method() {
var a = new D(); // works fine
}
}
//var a = new D(); // fails in outer scope
Traceur生成的JShttps://google.github.io/traceur-compiler/demo/repl.html
$traceurRuntime.ModuleStore.getAnonymousModule(function() {
"use strict";
var C = function C() {
var D = function D() {};
($traceurRuntime.createClass)(D, {}, {});
};
($traceurRuntime.createClass)(C, {method: function() {
var a = new D();
}}, {});
return {};
});
//# sourceURL=traceured.js
不,ES6 中没有嵌套类作用域,而且类语法中也不存在私有成员之类的东西(如果您是这么想的话)。
当然,您可以将第二个类作为另一个类的静态属性,如下所示:
class A {
…
}
A.B = class {
…
};
或者您使用额外的范围:
var C;
{
class D {
constructor() { }
}
C = class C {
constructor() { }
method() {
var a = new D(); // works fine
}
}
}
(There seems to be a bug with traceur as it uses a hoisted var
for the class declaration instead of block scope)
随着类字段语法,也可以编写单个表达式或声明:
class A {
…
static B = class {
…
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)