我想組織我的代碼有點但有問題與未定義的超類。我希望這只是一個負載路徑問題,但我無法弄清楚。我與運行以下命令:類繼承,並要求與Coffeescript不同的文件的子類
coffee rooms.coffee
rooms.coffee
Room = require('./rooms/room')
module.exports = class Rooms extends Object
constructor: ->
@
房/ room.coffee
module.exports = class Room
@Active: require('./active')
constructor: (@id) ->
@users = {}
房/ active.coffee
Room = require('./room')
console.log Room #=> {}
module.exports = class Active extends Room
constructor: (@id) ->
@type = "Active"
super
如果我嘗試做new Active
,我得到以下錯誤:
TypeError: Cannot read property 'constructor' of undefined
Active
的super
被列爲undefined
:
[Function: Active] __super__: undefined
爲什麼Room
不確定? (或者更確切地說,只是一個空的對象?)
更新
這是通過一個循環依賴以下,很多人指出造成的。我最終只是將子類定義放在基類定義的內部,而不是試圖將它們保存在單獨的文件中。事情是這樣的:
class Room
constructor: ->
# ...
class @Active extends Room
constructor: ->
# ...
class @Inactive extends Room
constructor: ->
# ...
active = new Room.Active
inactive = new Room.Inactive
題外話,但到底是什麼'#=>'怎麼辦? – Thilo
這只是一個評論,我顯示該命令的輸出(它只輸出一個空對象) – bricker
我明白了。以爲我錯過了一些奇特的新語法。 – Thilo