【发布时间】:2014-03-07 10:44:16
【问题描述】:
我是主干 js 的新手,在看似微不足道的方面遇到了困难。
每当我调用 Backbone.Collection.extend、Backbone.Model.extend 或 Backbone.View.extend 时,返回的是一个空函数,而不是具有继承属性的对象。
例子:
var view = Backbone.View.extend({
});
console.log("View:");
console.log(view);
Console.log 显示:
View:
function()
如果你点击“function()”,什么都不会发生,它只是一个没有属性的空函数。
在我尝试扩展 Backbone 对象的任何地方,我都会遇到同样的问题。当我探索这个问题时,我尝试了这个:
var collection = Backbone.Collection.extend({
add: function() {
console.log("Add gets called");
return {};
}
});
console.log("Collection:");
console.log(collection);
console.log(collection.add());
控制台显示:
Collection:
function()
TypeError: collection.add is not a function
我不认为我的 requirejs 设置有什么不寻常之处,所以我希望有更多使用下划线和主干的 extend() 经验的人能告诉我为什么他们有时会返回空函数。
任何关于我可能会研究解决此问题的领域的建议都将受到欢迎。作为所涉及的库的新手,我对如何解决这个问题有点摸不着头脑,以便继续使用我的应用程序。
【问题讨论】:
-
extend返回一个构造函数,你应该使用new关键字创建实例,然后你可以调用add函数。 -
var collection = new Backbone.Collection.extend({});你可以使用这样的东西
-
这很有意义并且按预期工作,谢谢。
标签: javascript jquery backbone.js underscore.js