Coffeescript 在构造函数中调用类函数是';不被承认 答复:
事实证明,我在创建类实例时忽略了使用Coffeescript 在构造函数中调用类函数是';不被承认 答复:,coffeescript,Coffeescript,事实证明,我在创建类实例时忽略了使用new关键字。问题中的代码本身很好 问题: 我有一个相当简单的类,其中构造函数调用该类上的另一个方法(用于节点的编辑器)。调用发生在jQuery each()循环内部,但我也尝试将其移到外部 define ['jquery'], ($) -> class Editor constructor: (@node, @data, @template) -> @node.widgets().each (i, elem) =>
new
关键字。问题中的代码本身很好
问题:
我有一个相当简单的类,其中构造函数调用该类上的另一个方法(用于节点的编辑器)。调用发生在jQuery each()循环内部,但我也尝试将其移到外部
define ['jquery'], ($) ->
class Editor
constructor: (@node, @data, @template) ->
@node.widgets().each (i, elem) =>
data = if @data then @data[i] else null
node = $(elem)
@editor_for_node node, data
editor_for_node: (node, data) ->
console.log 'hello!'
return {
'Editor': Editor,
}
当调用行@editor\u for_node,data
时,我得到一个错误(在Firebug中),它说this.editor\u for_node不是函数
我真的不明白为什么这不能正常工作,我能看到的唯一可能的奇怪来源是我在开始时使用了require.js的define函数
编辑:生成的输出
第一:您使用的是哪个版本的CoffeeScript?在某些以前的版本中,胖箭头一直是bug的来源
如果您使用的是最新版本(1.3.1),那么我将继续说这是一个缩进问题。当我复制并粘贴你的代码时,效果很好。你是在混合制表符和空格吗?验证编译后的输出是否包含该行
Editor.prototype.editor_for_node = ...
更新:查看此答案的评论。问题是调用构造函数时没有使用new
关键字。首先:您使用的是哪个版本的CoffeeScript?在某些以前的版本中,胖箭头一直是bug的来源
如果您使用的是最新版本(1.3.1),那么我将继续说这是一个缩进问题。当我复制并粘贴你的代码时,效果很好。你是在混合制表符和空格吗?验证编译后的输出是否包含该行
Editor.prototype.editor_for_node = ...
更新:查看此答案的评论。问题是调用构造函数时没有使用new
关键字。Hi Trevor,感谢您的快速回答。我用的是咖啡脚本1.3.1。如果这是一个缩进问题,我会感到惊讶,我来自Python背景,所以我习惯了基于缩进的语法的怪癖。我将把生成的代码添加到问题中。生成的代码看起来不错。现在我想问题在于如何调用构造函数,例如,您是否忘记使用new
关键字?啊哈!我习惯于不用new
,以至于我没有发现CoffeeScript需要它。这似乎已经解决了问题。我将更新问题以反映这一点,请随时更新您的答案。谢谢嗨,特雷弗,谢谢你的快速回答。我用的是咖啡脚本1.3.1。如果这是一个缩进问题,我会感到惊讶,我来自Python背景,所以我习惯了基于缩进的语法的怪癖。我将把生成的代码添加到问题中。生成的代码看起来不错。现在我想问题在于如何调用构造函数,例如,您是否忘记使用new
关键字?啊哈!我习惯于不用new
,以至于我没有发现CoffeeScript需要它。这似乎已经解决了问题。我将更新问题以反映这一点,请随时更新您的答案。谢谢