我正在创建一个名为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吊装导入有关。
在这两个班级之间建立这种关系的最佳方式是什么?
答案 0 :(得分:1)
这更像是您的类层次结构中的设计问题。超类不应该知道和/或使用对子类的引用。
也许你应该选择合成而不是尝试循环引用。
我真的不明白为什么Pips从Carousel继承。
希望这有帮助。