Javascript CoffeeScript中未定义静态属性的问题

Javascript CoffeeScript中未定义静态属性的问题,javascript,coffeescript,Javascript,Coffeescript,因此,我正在为一个项目编写一些coffeescript,并试图在类中创建一些静态属性。我一直在跟踪代码库中的另一个文件,它成功地完成了相同的事情,但我的文件不起作用 我的代码 class Messages @toggleUnreadConversations:()-> # This is the line in question, Messages is defined with all the # functions but the proper

因此,我正在为一个项目编写一些coffeescript,并试图在类中创建一些静态属性。我一直在跟踪代码库中的另一个文件,它成功地完成了相同的事情,但我的文件不起作用

我的代码

class Messages
    @toggleUnreadConversations:()->
        # This is the line in question, Messages is defined with all the 
        # functions but the property ViewOnlyUnread is undefined

        Messages.ViewOnlyUnread = !Messages.ViewOnlyUnread

    @init:->
        @ViewOnlyUnread = false
代码库中成功使用静态属性的其他代码

class Map
   @CacheRealtor: (realtor) ->
        realtor.realtor_id = parseInt(realtor.realtor_id)

        # Here the static property IdToRealtorMap is defined 
        Map.IdToRealtorMap[parseInt(realtor.realtor_id)] = new Realtor()
   @Init: ->
       @IdToListingMap = []
       @IdToRealtorMap  = []

从这里我可以看出,当页面加载init时,调用这些init函数的方式是相同的。这两个类都是静态类,从未创建过其中任何一个的实例。有人知道会出现什么问题吗?

函数init正在设置一个实例变量,但是您的
toggleUnreadConversations
函数试图引用它,好像它是类的属性一样

您应该使用
@
引用
init
设置的实例变量:

class Messages
  @toggleUnreadConversations: ->

    # reference the instance variable
    @ViewOnlyUnread = !@ViewOnlyUnread

  @init: ->
    @ViewOnlyUnread = false

init
函数正在设置一个实例变量,但是您的
toggleUnreadConversations
函数试图引用它,就好像它是类的属性一样

您应该使用
@
引用
init
设置的实例变量:

class Messages
  @toggleUnreadConversations: ->

    # reference the instance variable
    @ViewOnlyUnread = !@ViewOnlyUnread

  @init: ->
    @ViewOnlyUnread = false

Messages.ViewOnlyUnread在执行该行代码时计算为undefined。Messages.ViewOnlyUnread在执行该行代码时计算为undefined。忘了提及我从未实际初始化该类的实例。当我的页面加载时,我只调用Messages.init()。我的目标是使它成为一个类属性,消息类只是将所有这些功能放在名称空间中的一种方式。在这种情况下,我建议将
Messages
设置为一个对象:
Messages={}
,然后设置该对象的属性。CoffeeScript中的
实际上是为将要实例化的带有构造函数的对象设计的。忘了提到我从未实际初始化过该类的实例。当我的页面加载时,我只调用Messages.init()。我的目标是使它成为一个类属性,消息类只是将所有这些功能放在名称空间中的一种方式。在这种情况下,我建议将
Messages
设置为一个对象:
Messages={}
,然后设置该对象的属性。CoffeeScript中的
实际上是针对具有将要实例化的构造函数的对象。