使用超级时,coffeescript中出乎意料的其他事情

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用超级时,coffeescript中出乎意料的其他事情相关的知识,希望对你有一定的参考价值。

我正在使用backbone.js,在coffeescript中编写它但得到此错误并且无法解决它!

代码片段:

module.exports = class CoreModel extends Backbone.Model

   destroyed: false

   # Helper to toggle the state of boolean value (using not)
   toggle: (key) -> @swap key, invert

   # Helper to change the value of an entry using a function.
   swap: (key, f) -> @set key, f @get key

   toJSON: -> if @destroyed then 'DESTROYED' else super

错误:

[stdin]:11:45: error: unexpected else
toJSON: -> if @destroyed then 'DESTROYED' else super
                                          ^^^^

不知道为什么这是一个意外的其他!

答案

如果您使用的是coffeescript 2,则需要在super()中使用括号。这里的错误信息应该更有帮助。

你可以在the docs上阅读它。

module.exports = class CoreModel extends Backbone.Model

  destroyed: false

  # Helper to toggle the state of boolean value (using not)
  toggle: (key) -> @swap key, invert

  # Helper to change the value of an entry using a function.
  swap: (key, f) -> @set key, f @get key

  toJSON: -> if @destroyed then 'DESTROYED' else super()

如果您发现需要旧行为的情况(所有参数都转发到super调用,那么您可以使用:

foo: -> super arguments...

以上是关于使用超级时,coffeescript中出乎意料的其他事情的主要内容,如果未能解决你的问题,请参考以下文章

在编译字符串插值实例时,Coffeescript是否始终使用ES6模板文字?

CoffeeScript - 如何在 ruby​​ on rails 中使用咖啡脚本?

@property(保留)是不是自动释放或释放对象?

在同一个项目中同时使用 coffeescript 和 typescript

为啥使用javascript函数包装器(在coffeescript中添加)“.call(this)”

如何在 CoffeeScript 胖箭头回调中引用实际的“this”?