进口/出口,ES6和扩展类

时间:2016-12-17 09:56:03

标签: javascript import ecmascript-6 export es6-class

我正在创建一个名为Carousel的类,并且从该类中想要调用一个名为Pips的类,它将通过父子关系绑定到轮播。

我遇到的问题是我收到以下错误:

Super expression must either be null or a function, not undefined

我目前的代码如下:

// carousel.js

import { Pips } from './pips'

export class Carousel {
  constructor( options ) {
    this.pip_type = options.pip_type;
  }

  setup() {
    this.initPips();
  }

  initPips() {
    var p = new Pips(
      { 
        carousel_name : 'carousel',
        pip_type      : this.pip_type
      }
    );
  }
}


// pips.js

import { Carousel } from './carousel'

export class Pips extends Carousel {
  constructor(options) {
    super(options);
    console.log( 'Pips Initialised' );
  }

}

很明显,存在循环依赖,但我无法看到如何在尝试使用另一个类扩展一个类时使用ES6语法来避免这种情况 - 如果我删除了import { Carousel }...从pips.js然后我得到Carousel is undefined

的错误

如果我将Pips类移动到与我的Carousel类相同的文件中并在其下面,那么我不会收到此错误,所以认为问题可能与ES6吊装导入有关。

在这两个班级之间建立这种关系的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

这更像是您的类层次结构中的设计问题。超类不应该知道和/或使用对子类的引用。

Check here for details

也许你应该选择合成而不是尝试循环引用。

我真的不明白为什么Pips从Carousel继承。

希望这有帮助。