2017-02-05 54 views
1

Node.jsでクラスオブジェクト(この場合はenumとして使用される)を拡張することはできません。例継承されたオブジェクトを継承するノードjs(enum)

フー

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

[私にとってうまくいく](https://jsfiddle.net/xbtngykb/)です。ここには何か変わったことがあります。 – 4castle

+0

あなたのコードはローカルマシンでも動作します。どのnodejsバージョンを使用していますか? – num8er

+0

@ 4castle 'var b = new Bar(); console.log(b.action) ' – guest271314

答えて

1

これは周期的な依存関係の問題だと私は信じています。

はい、Common.js module.exports割り当てを用いBarBaz間の循環依存性は、Baz.jsモジュール内Bar空の対象となります。解決策はuse module properties onlyです。 (Btw、宣言的なES6モジュールでうまくいきました)。

関連する問題