为什么Backbone JS .extend()总是返回一个空函数?

时间:2014-03-07 10:44:16

标签: javascript jquery backbone.js underscore.js

我是骨干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()可以告诉我为什么他们有时会返回空函数。

对于我可能会考虑解决这个问题的方面的任何建议都会受到欢迎。作为所涉及的图书馆的新手,我有点想知道如何解决这个问题,所以我可以继续使用我的应用程序。

1 个答案:

答案 0 :(得分:1)

  

扩展 Backbone.Collection.extend(properties,[classProperties])

     

要创建自己的Collection类,请扩展Backbone.Collection,提供实例属性,以及可直接附加到集合构造函数的可选classProperties。

因此,在您的情况下viewCollection class,请尝试使用new关键字对其进行实例化:

var view = Backbone.View.extend({
});

console.log("View:");
console.log(new view()); // Here