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