如何在CoffeeScript中访问类方法?

时间:2014-11-11 09:56:43

标签: javascript coffeescript

我正在这样做: 我是CoffeeScript和JavaScript原型的新手。

话虽这么说,我正在尝试在CoffeeScript中创建一个类的新Object,然后调用getter来检索变量,但是发生了什么是我得到一个'undefined'响应。我做错了什么,或者我应该如何解决这个问题。我很新,并试图遵循KISS标准。

class TestHandler
  constructor: ->
  testArray = []
  getTestArray: ->
    @testArray

tH = new TestHandler()
tH.testArray.push 1 #testArray returns undefined
tH.getTestArray().push 1 #getTestArray returns undefined
console.log tH.getTestArray()

1 个答案:

答案 0 :(得分:1)

当您在CoffeeScript中创建一个类时,您列出的每个元组都会转到prototype属性(在本例中为TestHandler.prototype),因此在该类的实例之间共享,但是每个其他属性,将是TestHandler本身的成员(如果名称前缀为@)或作用域{0}最终将被编译到的函数的私有变量(与您的{{一样) 1}})。这意味着,您的class将没有名为testArray = []的属性。如果您希望它是每个实例的自己的属性,请将其放入构造函数中:

tH

一般来说,财产将降落的地方取决于您在testArray声明中的写作方式。看看这个CS代码

class TestHandler
    constructor: ->
        @testArray = []
    getTestArray: ->
        @testArray

tH = new TestHandler()
tH.testArray.push 1 #now everything works
tH.getTestArray().push 1
console.log tH.getTestArray()

以及它编译的代码:

class