如何使用coffeescript创建另一个构造函数?

如何使用coffeescript创建另一个构造函数?,coffeescript,Coffeescript,我在coffeescript中创建了点类和向量类。两个类都继承MyObject类,两个类的构造函数都使用super() 我想把点转换成向量。因此,我尝试编写Vector.fromPoint()方法。该方法用作构造函数(新向量.fromPoint(新点(x,y))) 然而,我不能用咖啡脚本来写。可以用咖啡脚本写吗?我想在Vector.fromPoint构造函数中使用MyObject.constructor作为super()。在类函数中,@是类,为什么不这样简单呢 class Vector exte

我在coffeescript中创建了点类和向量类。两个类都继承MyObject类,两个类的构造函数都使用super()

我想把点转换成向量。因此,我尝试编写Vector.fromPoint()方法。该方法用作构造函数(
新向量.fromPoint(新点(x,y))


然而,我不能用咖啡脚本来写。可以用咖啡脚本写吗?我想在Vector.fromPoint构造函数中使用MyObject.constructor作为super()。

在类函数中,
@
是类,为什么不这样简单呢

class Vector extends MyObject
    @fromPoint: (p) ->
        new @(p.x, p.y)
    #...
或者,如果您不想允许子类化
向量

class Vector extends MyObject
    @fromPoint: (p) ->
        new Vector(p.x, p.y)
    #...
在这两种情况下,你都会说
Vector.fromPoint(some_点)
,然后得到你的
Vector
实例

您还可以替换
向量的构造函数,以便
新向量(x,y)
新向量(某些点)


接受点的构造函数是另一个构造函数。所以我想分离两个构造函数。fromPoint方法清楚地表明它是带点的构造函数。所以我想要fromPoint构造函数。我无法想象如何在fromPoint中使用new。新的构造函数调用哪个构造函数?
class Vector extends MyObject
    constructor: (args...) ->
        if(args.length == 1 && args[0] instanceof Point)
            { @x, @y } = args[0]
        else if(args.length == 2)
            [ @x, @y ] = args
        else
            # Do whatever error handling you want here...
        super()
     #...