Google chrome extension 有人能给我解释一下咖啡脚本的语法吗?

Google chrome extension 有人能给我解释一下咖啡脚本的语法吗?,google-chrome-extension,coffeescript,Google Chrome Extension,Coffeescript,我正在扩展一个用coffeescript编写的chrome扩展,并且遇到了以下语法: Commands = init: -> for command, description of commandDescriptions @addCommand(command, description[0], description[1]) availableCommands: {} keyToCommandRegistry: {} 我只想检查一下这个语法和类之间的区别

我正在扩展一个用coffeescript编写的chrome扩展,并且遇到了以下语法:

Commands =
  init: ->
    for command, description of commandDescriptions
      @addCommand(command, description[0], description[1])

  availableCommands: {}
  keyToCommandRegistry: {}
我只想检查一下这个语法和类之间的区别(假设是这样的):

只是前者没有原型吗?我认为可以在顶部的命令上调用方法,如
Commands.init()
。我正在从事的项目似乎同时使用了两种语法,因此我希望在使用其中一种语法之前,确保我理解每种语法的含义


谢谢。

第一个
命令的主要含义是它是一个
对象
,而不是
函数
,因此无法直接删除它的实例

它的
init
方法包括
commandDescriptions
(我只能期望它在其他地方声明)和
@addCommand
,这两个方法没有附加到
Command
对象,这有点令人困惑。如果
Command
没有
@addCommand
,我希望它是一个。但由于预计会出现未在
命令
上声明的方法,因此
命令
中的功能组似乎是另一个类

编辑:

为了澄清,对象可以有
@变量
。在
init
函数中,您可以将
availableCommands
keytocomandregistry
作为
@availableCommands
@keytocomandregistry
引用。但是,在这个特定的示例中,
@addCommand
没有在任何地方声明。我希望它被声明为
命令
对象声明的一部分,比如:

CommandsA =
  init: ->
    for command, description of commandDescriptions
      @addCommand(command, description[0], description[1])

  availableCommands: {}
  keyToCommandRegistry: {}

  addCommand: (command, descriptionInfo, otherDescriptionInfo) ->
    #Does some stuff
如果您可以找到
addCommand
的声明位置,这将有助于理解如何使用
Command


还需要注意的是:由于
命令
是一个对象而不是一个类,因此
可用命令
keyToCommandRegistry
对象可以看作是静态类变量。

ok。我只是重读。我以为关于编程语言语法的问题是关于这个主题的?我弄错了吗?我认为这既与程序员常用的
软件工具有关
,也与
特定的编程问题有关(可能更为细微),问题是无法理解语法结构的含义。此外,我不认为它属于7个类别中的任何一个会认为它离题。有人能帮我理解吗(不想争论,只是想理解。)?原因中的“它缺乏足够的信息来诊断问题”对我来说没有多大意义。不要担心一次势均力敌的投票,有人可能会感到困惑,度过糟糕的一天,或者犯了错误。谢谢@aelr这正是我想要的!因此,只需检查一下,对象可以有可以对其调用的方法(例如
init
),但不能有
@变量
(这是否意味着对象范围内的
this
不引用对象?)。顺便说一句,它不是一个完全混合的东西,但它的行为有点像一个单独的东西:
root.Commands=Commands
将它附加到其他东西上。
CommandsA =
  init: ->
    for command, description of commandDescriptions
      @addCommand(command, description[0], description[1])

  availableCommands: {}
  keyToCommandRegistry: {}

  addCommand: (command, descriptionInfo, otherDescriptionInfo) ->
    #Does some stuff