我正在学习如何使用 require.js 和 backbone.js 的示例。在示例中,模型在返回时不使用 new
。在我的代码中,我必须使用 new
否则会出现错误:
Uncaught TypeError: Object function (){a.apply(this,arguments)} has no method 'toJSON'
不起作用:
define([
'underscore',
'backbone'
], function(_, Backbone) {
var personModel = Backbone.Model.extend({
defaults: {
conversations: 'No Conversations'
},
initialize: function(){
}
});
return personModel;
});
作品:
define([
'underscore',
'backbone'
], function(_, Backbone) {
var personModel = Backbone.Model.extend({
defaults: {
conversations: 'No Conversations'
},
initialize: function(){
}
});
return new personModel;
});
有人知道为什么吗?
最佳答案
Backbone.Model.extend
返回一个构造函数——而不是一个实际的对象。在使用 new
(如第二个示例)实例化之前,构造函数不是对象(因此不会有任何属性)。这意味着 toJSON
也不可用,您最终会看到您看到的错误。
当您准备好实际创建一个新的 personModel
时,您可以这样做(我假设您在上面描述的模块已被定义为“Person”):
define("main", ["Person"], function (Person) {
var me = new Person({ conversations: ['Hello, world']});
});
关于javascript - 在 javascript 中使用 "new",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796268/