Вы можете использовать getter:
class Huffman {
constructor() { /* ... */ }
static get Node() {
return class Node {
constructor() {
var API = this;
API.symbol = 0; API.weight = 0;
return API;
}
};
}
get Node() {
return Huffman.Node;
}
encode() { /* ... */ }
decode() { /* ... */ }
/* ... */
}
// usage
huffman = new Huffman;
new huffman.Node;
new Huffman.Node;
, который в последнем Chrome Dev 44.0.2376.0 на Apple 10.10.2 дает в консоли
new huffman.Node
Node {symbol: 0, weight: 0}
new Huffman.Node
Node {symbol: 0, weight: 0}
В других новостях геттеры - это секретный соус, который позволит вам сделать целую кучу классных вещей в ES6.
Обратите внимание. Вышеупомянутая конструкция разбивает instanceof
на Node
(почему? весь новый класс определяется с каждым вызовом get). Чтобы не сломать instanceof
, определите узел за пределами области одного получателя, либо в конструкторе (отключив свойство класса Huffman.Node, и заставив instanceof
работать в пространстве имен одного экземпляра Huffman и выйти за его пределы) , или определить узел в области собора или предка Хаффману (позволяя instanceof
работать во всех областях ниже, чем тот, где определен узел).