javascript - CoffeeScript 类中是否可以有同名的静态函数和成员函数?

标签 javascript class static coffeescript

如果我的问题表述不正确或者很难理解我在问什么,这里有一个我正在尝试做的事情的简化示例。

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 是在调用自身,这不是这里想要的。我正在尝试做的事情是可能的还是我正在尝试一些愚蠢的事情?

最佳答案

num1num2 是对象,您必须处理它们的 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/

相关文章:

javascript - 内联 Javascript(在 HTML 中)如何工作?

javascript - 在 ExtJS/Javascript 中处理事件的更好方法

Python继承: init is having an issue with the number of params

java - 集群环境中 Spring session 范围 bean 和 Java 静态对象的行为

javascript - 如何在Init方法中调用函数?

javascript - 在 Razor 部分 Html BeginForm 中停止回发时的页面移动

java - 从 C 类访问 A 类内部 B 类的值

java - 子类无法被保护

C++静态对象类函数

python - Django 静态文件版本