节点js扩展继承对象(作为枚举)

时间:2017-02-05 00:43:13

标签: javascript node.js ecmascript-6

似乎你不能在Node.js中扩展一个类对象(在本例中用作枚举)。实施例

class Foo {}
Foo.action = {};
Foo.action.jump = 1;
module.exports = Foo;

酒吧

var Foo = require('./foo');
var Baz = require('./baz');

class Bar extends Foo { 
    constructor(){
        super();
        this.baz = new Baz();
    }   
}

Bar.action.stay = 2;
module.exports = Bar;

用法(编辑,在课堂上使用)

var Bar = require('./bar');
class Baz {
    constructor(){
        console.log(Bar.action); //undefined
    }
}
module.exports = Baz;   

我认为这是一个周期性依赖问题。

1 个答案:

答案 0 :(得分:1)

  

我认为这是一个周期性依赖问题。

是的,使用赋值到Common.js Bar的{​​{1}}和Baz之间的周期性依赖关系会使module.exports成为空对象在Baz.js模块中。解决方案是use module properties only。 (顺便说一句,这在声明性ES6模块中运行良好)。