2016-03-25 8 views
0

私は、次のコードしている:red_circle = Circle.Red(new Point(0,0), 10)Javascriptの「未コンストラクタ」例外

しかし、コードは動作しません。次:

obj = Circle.Red 
red_circle = obj(new Point(0,0), 10) 

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

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

class Point 
    constructor: (@x, @y) -> 

を私はこのような赤い丸を作成することができます私は間違って何をしていますか?

答えて

2

Circle.Red(...)this@)〜Circle; so new @ = new Circle

obj(...)が設定されていないため、new @は文脈によってはnewを呼び出しています。

あなたは結合することによってこの問題を解決することができますobj = Circle.Red.bind(Circle)obj()として呼び出さ

1

は、コールへのコンテキストありません。機能内のthisではなく、Circleではなく、むしろwindowであることを意味します。コンテキストをバインドして保存する必要があります。

obj = Circle.Red.bind Circle