gpt4 book ai didi

coffeescript - 无法识别在构造函数中调用类函数

转载 作者:行者123 更新时间:2023-12-04 18:21:44 25 4
gpt4 key购买 nike

回答:

原来我忽略了使用 new创建类实例时的关键字。问题本身的代码很好。

问题:

我有一个相当简单的类,其中构造函数调用类上的另一个方法(editor_for_node)。调用发生在 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_for_node node, data被调用,我得到一个错误(在 Firebug 中)说 this.editor_for_node is not a function .

我真的不明白为什么这不能正常工作,我能看到的唯一可能的奇怪来源是我在一开始就使用了 require.js 的定义函数。

编辑:生成的输出
(function() {

define(['jquery'], function($) {
var Editor;
Editor = (function() {

Editor.name = 'Editor';

function Editor(node, data, template) {
var _this = this;
this.node = node;
this.data = data;
this.template = template;
this.node.widgets().each(function(i, elem) {
data = _this.data ? _this.data[i] : null;
node = $(elem);
return _this.editor_for_node(node, data);
});
}

Editor.prototype.editor_for_node = function(node, data) {
return console.log('hello!');
};

return Editor;

})();
return {
'Editor': Editor
};
});

}).call(this);

最佳答案

第一:您使用的是哪个版本的 CoffeeScript?在某些以前的版本中,胖箭头一直是错误的来源。

如果您使用的是最新的(1.3.1),那么我会继续说这是一个缩进问题。当我复制并粘贴您的代码时,它工作正常。你在混合制表符和空格吗?验证编译后的输出是否包含该行

Editor.prototype.editor_for_node = ...

更新:请参阅对此答案的评论。原来问题在于 new调用构造函数时未使用关键字。

关于coffeescript - 无法识别在构造函数中调用类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com