Class 将父类的引用传递给子类
我试图将对父类实例的引用传递给其子类。父类是:Class 将父类的引用传递给子类,class,coffeescript,Class,Coffeescript,我试图将对父类实例的引用传递给其子类。父类是: class UI constructor: (parameters) -> @addBTS = new AddBTS @toolbar = new Toolbar(this) AddBts和Toolbar类包括: class Toolbar constructor: (@parent) -> add_bts_clickhandler: () => $('body').on 'click'
class UI
constructor: (parameters) ->
@addBTS = new AddBTS
@toolbar = new Toolbar(this)
AddBts和Toolbar类包括:
class Toolbar
constructor: (@parent) ->
add_bts_clickhandler: () =>
$('body').on 'click', '#add_bts', ->
@parent.addBTS.display()
class AddBTS
constructor: () ->
display: () =>
$("#setBuildingTileSet").show()
console.log 'Showing Sir'
所有这些类都在单独的CoffeeScript文件中定义,并按以下顺序连接在一起(游戏是UI实例所在的地方):
否,当我调用add\u bts\u clickhandler:()
时,我收到错误消息:*无法读取未定义的属性'addBTS'*
所以它认为父对象是未定义的,而显然不是
请有人帮帮我,我完全被困在这里了,因为我的代码接缝很好。我的解决方案:
我调用add_bts_clickhandler:
ui = new window.UI();
ui.toolbar.add_bts_clickhandler();
我的班级:
class window.UI
constructor: (parameters) ->
@addBTS = new window.AddBTS
@toolbar = new window.Toolbar(this)
class window.AddBTS
constructor: () ->
display: () =>
$("#setBuildingTileSet").show()
console.log 'Showing Sir'
class window.Toolbar
constructor: (@parent) ->
add_bts_clickhandler: () =>
p = @parent ## introduce a new variable!
$('body').on 'click', '#add_bts', ->
p.addBTS.display(); ##
#@parent.addBTS.display()
让我们更仔细地看一下工具栏类:
class window.Toolbar
constructor: (@parent) ->
add_bts_clickhandler: () =>
$('body').on 'click', '#add_bts', ->
@parent.addBTS.display()
生成的javascript的一部分:
Toolbar.prototype.add_bts_clickhandler = function() {
return $('body').on('click', '#add_bts', function() {
return this.parent.addBTS.display();
});
};
在此行中:返回this.parent.addBTS.display()这是指回调函数()!不添加到添加\u bts\u clickhandler 我希望我帮助了你
Toolbar.prototype.add_bts_clickhandler = function() {
return $('body').on('click', '#add_bts', function() {
return this.parent.addBTS.display();
});
};