2016-12-17 124 views
0

我創建了一個名爲Carousel的類,並且要從該類內調用一個名爲Pips的類,該類將通過父子關係綁定到傳送帶。導入/導出,ES6和擴展類

我的問題是,我收到以下錯誤:

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 Class移動到與我的Carousel類相同的文件中並且在它下面,那麼我不會看到這個錯誤,所以認爲問題可能與ES6吊裝導入有關。

什麼是我建立這兩個類之間關係的最佳方式?

回答

1

這更多的是在您的類層次結構中的設計問題。超類不應該意識到和/或使用對子類的引用。

Check here for details

也許你應該去組成,而不是試圖做循環引用。

我真的不明白爲什麼Pips繼承自Carousel。

希望這會有所幫助。