CoffeeScript - 将args传递给超级构造函数的问题

non*_*com 0 javascript coffeescript

我有以下CoffeeScript代码:

planet = new Planet p5, {x: 100, y: 100, diameter: 20}
Run Code Online (Sandbox Code Playgroud)

和其他地方:

class GameObject
  constructor: (@p5, @x, @y) ->
    @selected = false

class Planet extends GameObject
  constructor: (p5, opts) ->
    super (p5 opts.x opts.y)
    @diameter = opts.diameter
Run Code Online (Sandbox Code Playgroud)

而对于super它说的线:

未捕获的TypeError:对象#<Object>的属性"x"不是函数

当它只是:它是好的:

class Planet
  constructor: (p5, opts) ->
    @x = opts.x
    @y = opts.y
    @diameter = opts.diameter
    @selected = false
Run Code Online (Sandbox Code Playgroud)

即在让它成为一个更通用的孩子之前GameObject...我已经尝试了一些重新安排以使其工作,但所有都保留.不确定它是否与CoffeeScript或JavaScript有关.官方网站上的"尝试CoffeScript"事情在这里没有发现任何错误.浏览器是Chrome ...这里有什么问题,我该如何克服这个问题?

Nik*_*iko 5

您缺少逗号来分隔参数:

super (p5 opts.x opts.y)
Run Code Online (Sandbox Code Playgroud)

应该

super (p5, opts.x, opts.y)
Run Code Online (Sandbox Code Playgroud)

否则,该行被解释为super(p5(opts.x(opts.y))),因此"不是函数"错误.