【发布时间】:2014-08-04 04:44:41
【问题描述】:
我开始学习 javascript/coffeescript 与骨干,我得到一个我不明白的错误。任何帮助将不胜感激。
我做了一个很简单的例子,下面是buggy.coffeecoffeescript 文件:
class Panel extends Backbone.Model
p = Panel() # I instantiate it to trigger the error
我使用coffee -c buggy.coffee 编译成buggy.js。但是当我运行它并查看 javascript 控制台时,我得到了错误:
Uncaught TypeError: undefined is not a function
错误发生在backbone.js(第256行)::
var Model = Backbone.Model = function(attributes, options) {
var attrs = attributes || {};
options || (options = {});
this.cid = _.uniqueId('c');
this.attributes = {};
if (options.collection) this.collection = options.collection;
if (options.parse) attrs = this.parse(attrs, options) || {};
attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
this.set(attrs, options); ### <================================== here
this.changed = {};
this.initialize.apply(this, arguments);
};
因为this.set 未定义。
现在我通过编辑buggy.js找到了一种避免错误的方法(注释是原始的coffeescript生成的行):
function Panel() {
#return Panel.__super__.constructor.apply(this, arguments);
return new Panel.__super__.constructor(this, arguments);
}
但这不可能是一个真正的解决方案。 那么我做错了什么?
【问题讨论】:
-
p = new Panel(),你错过了关键字'new'
-
谢谢。我想我累了(凌晨 1 点被问到),现在我感到很惭愧:-/ ...
标签: javascript backbone.js coffeescript