如果我的问题表述不正确或者很难理解我在问什么,这里有一个我正在尝试做的事情的简化示例。
class Number
constructor: (@num) ->
@add: (operand1, operand2) ->
return operand1 + operand2
add: (operand) =>
@num = @add(@num, operand)
Number num1
Number num2
Number.add(num1, num2)
num1.add(num2)
这样做的目的是,Number.add(num1, num2)
可以静态地使用来返回 Number 类的两个对象的总和,以便 Number 类的对象可以使用 num1.add(num2)
使用静态函数的代码向其中添加另一个数字对象。当我尝试在我的项目中实现类似的代码时,结果是递归困惑。我意识到在 add 函数中调用 @add 是在调用自身,这不是这里想要的。我正在尝试做的事情是可能的还是我正在尝试一些愚蠢的事情?
最佳答案
num1
和 num2
是对象,您必须处理它们的 num
属性:
class Number
constructor: (@num) ->
@add: (operand1, operand2) ->
# the addition must be done on num property
operand1.num + operand2.num
add: (operand) ->
# here, you must call Number.add
Number.add(@, operand)
# to create Number, use new Number
num1 = new Number 10
num2 = new Number 5
console.log Number.add(num1, num2)
console.log num1.add(num2)
在两个 add() 函数中,您应该检查操作数是否为 Number
以避免任何错误。
关于javascript - CoffeeScript 类中是否可以有同名的静态函数和成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058652/