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