我正在这样做: 我是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()
答案 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