似乎有可能将一个类嵌套在一个构造函数中,然后可以从该类中的任何位置实例化该构造函数,这是官方吗?
[编辑]例如
class C {
constructor() {
class D {
constructor() { }
}
}
method() {
var a = new D(); // works fine
}
}
//var a = new D(); // fails in outer scope
Traceur生成的JS https://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
}
}
}
(traceur似乎存在一个错误,因为它使用提升var
的类声明而不是块作用域)
使用建议的类字段语法,也可以编写单个表达式或声明:
class A {
…
static B = class {
…
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句