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

时间:2012-06-10 19:58:28

标签: javascript coffeescript

我有以下CoffeeScript代码:

planet = new Planet p5, {x: 100, y: 100, diameter: 20}

以及其他地方:

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

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

并且对于super行,它说:

  

未捕获的TypeError:对象#<的属性'x'对象>不是一个功能

当它只是:

时没关系
class Planet
  constructor: (p5, opts) ->
    @x = opts.x
    @y = opts.y
    @diameter = opts.diameter
    @selected = false

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

2 个答案:

答案 0 :(得分:5)

您缺少逗号来分隔参数:

super (p5 opts.x opts.y)

应该是

super (p5, opts.x, opts.y)

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

答案 1 :(得分:2)

你不只是想要

super p5, opts.x, opts.y

Here is a link to your code running with no errors