出于某种原因,我用CoffeeScript编写的类不会复制原型。
这是我正在使用的确切代码:
module.exports = class ListQueue
constructor: ->
@queue = []
@queueIds =[]
@currentId = 0
# Adds the given element to the queue.
# Returns the index of the element.
add: (el) ->
@queueIds.push @currentId
@queue.push el
@currentId++ # return @lastIndex, then increment
shift: ->
@queueIndexes.shift()
@queue.shift()
# Returns the index in the @queue array for the given id.
queueIndex: (id) ->
for queueIndex, i in queueIndexes
if queueIndex is id
return i
undefined
get: (id) ->
index = @queueIndex id
@queue[index]
length: ->
@queue.length
remove: (id) ->
index = @queueIndex id
if index?
@queueIds = @queueIds.slice index, index
@queue = @queue.slice index, index
true
else
false
这是该课程的原型,正如所料:
{ add: [Function],
shift: [Function],
queueIndex: [Function],
get: [Function],
length: [Function],
remove: [Function] }
但这很奇怪:new ListQueue
实际上给了我这个:
{ queue: [], queueIds: [], currentId: 0 }
我正在使用Node.JS 0.8.7。
答案 0 :(得分:3)
如果执行
,do函数实际上就在那里new Test().do()
你会得到“测试”
如果您需要intellisense类型支持,请先尝试添加构造函数。它将创建函数变量并绑定它们,如下所示:
this.LoadData = __bind(this.LoadData, this);
这将允许您明确地调用它们。