0

我有以下 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它说的那一行:

未捕获的类型错误:对象#<Object> 的属性“x”不是函数

当它只是:

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

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

4

2 回答 2

5

您缺少逗号来分隔参数:

super (p5 opts.x opts.y)

应该

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

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

于 2012-06-10T20:03:48.340 回答
2

你不只是想要

super p5, opts.x, opts.y

这是您的代码运行时没有错误的链接

于 2012-06-10T20:03:30.340 回答