我可能做了一些明显错误的事情,但我似乎无法从coffeescript类的构造函数中调用实例方法。
这也可能是一个更普遍的错误,所以我会告诉你它发生在哪里的背景。
我有两个类:BaseView和ChildView。 ChildView扩展了BaseView。 BaseView有一个递归方法,用一个子实例树填充其中一个属性。像这样:
BaseView:
class BaseView
constructor: (@xml) ->
console.log(@) #this logs X
@.children = @.populateChildren()
populateChildren: () ->
out = []
_.each(@.xml, (node) ->
out.push(new require("./child")(node))
)
return out
ChildView:
BaseView = require('./base')
class ChildView extends BaseView
constructor: (@xml) -> super
我通过以下方式初始化一个新的ChildView:
ChildView = require('./child')
childView = new ChildView(someXML)
我得到的错误是:
TypeError: Object #<Object> has no method 'populateChildren'
你可以从BaseView中的X console.log看到原因
{ ArrayBuffer: [Function: ArrayBuffer],
Int8Array: { [Function: Int8Array] BYTES_PER_ELEMENT: 1 },
Uint8Array: { [Function: Uint8Array] BYTES_PER_ELEMENT: 1 },
Uint8ClampedArray: { [Function: Uint8ClampedArray] BYTES_PER_ELEMENT: 1 },
Int16Array: { [Function: Int16Array] BYTES_PER_ELEMENT: 2 },
Uint16Array: { [Function: Uint16Array] BYTES_PER_ELEMENT: 2 },
Int32Array: { [Function: Int32Array] BYTES_PER_ELEMENT: 4 },
Uint32Array: { [Function: Uint32Array] BYTES_PER_ELEMENT: 4 },
Float32Array: { [Function: Float32Array] BYTES_PER_ELEMENT: 4 },
Float64Array: { [Function: Float64Array] BYTES_PER_ELEMENT: 8 },
DataView: [Function: DataView],
global: [Circular],
process: ...
GLOBAL: [Circular],
root: [Circular],
Buffer:
{ [Function: Buffer]
isEncoding: [Function],
poolSize: 8192,
isBuffer: [Function: isBuffer],
byteLength: [Function],
concat: [Function],
_charsWritten: 669 },
setTimeout: [Function],
setInterval: [Function],
clearTimeout: [Function],
clearInterval: [Function],
setImmediate: [Function],
clearImmediate: [Function],
console: [Getter],
before: [Function],
after: [Function],
beforeEach: [Function],
afterEach: [Function],
context: { [Function] skip: [Function], only: [Function] },
describe: { [Function] skip: [Function], only: [Function] },
xcontext: [Function],
xdescribe: [Function],
specify: { [Function] only: [Function], skip: [Function] },
it: { [Function] only: [Function], skip: [Function] },
xspecify: [Function],
xit: [Function],
xml: [ 'row', [ 'col', [Object], [Object] ] ],
data:
{ 'mentions-per-day':
{ legend: [Object],
tooltip: [Object],
yAxis: [Object],
xAxis: [Object],
subtitle: [Object],
title: [Object] },
data: { 'number-of-mentions': '3', 'mentions-per-day': [Object] } },
options: {} }
你可以看到某些东西与范围有些混乱,但我无法弄清楚是什么。我觉得它可能与循环依赖有关...请帮助我在这里任何人!提前致谢
答案 0 :(得分:0)
这只是一个或多或少的明显错字:
@.children = @.populateCildren()
# ^
应该是
@.children = @.populateChildren()
但请注意,省略点更加惯用:
@children = @populateChildren()