Javascript“;不是构造函数”;例外情况

Javascript“;不是构造函数”;例外情况,javascript,coffeescript,Javascript,Coffeescript,我有以下代码: class Circle constructor: (@center, @radius, @color) -> @Red: (@center, @radius) -> new @ center, radius, 'red' class Point constructor: (@x, @y) -> 我可以这样创建红色圆圈:red\u circle=circle.red(新点(0,0),10) 但以下代码不起作用: obj = Circle

我有以下代码:

class Circle
  constructor: (@center, @radius, @color) ->

  @Red: (@center, @radius) ->
    new @ center, radius, 'red'

class Point
  constructor: (@x, @y) ->
我可以这样创建红色圆圈:
red\u circle=circle.red(新点(0,0),10)

但以下代码不起作用:

obj = Circle.Red
red_circle = obj(new Point(0,0), 10)
我做错了什么?

圆圈。红色(…)
这个
@
)设置为
圆圈
;所以
new@
=
newcircle

obj(…)
没有设置
,因此
new@
正在调用其他内容上的
new
(取决于上下文)

您可以通过绑定来解决此问题:
obj=Circle.Red.bind(Circle)
Circle.Red(…)
此(
@
)设置为
Circle
;所以
new@
=
newcircle

obj(…)
没有设置
,因此
new@
正在调用其他内容上的
new
(取决于上下文)

您可以通过绑定来解决此问题:
obj=Circle.Red.bind(Circle)
当作为
obj()
调用时,调用没有上下文;意思是
函数内部不是
圆圈
,而是很可能是
窗口
。您需要绑定上下文以保留它:

obj = Circle.Red.bind Circle
当作为
obj()
调用时,调用没有上下文;意思是
函数内部不是
圆圈
,而是很可能是
窗口
。您需要绑定上下文以保留它:

obj = Circle.Red.bind Circle