骨干模型:初始化与构造函数

时间:2016-04-26 16:49:49

标签: javascript backbone.js constructor model initialization

通过docs阅读,我发现你可以在模型类上替换Backbone扩展的构造函数。但是这样做与初始化方法之间的区别是什么?使用new时不会同时调用吗?

var Library = Backbone.Model.extend({
  constructor: function() {
    this.books = new Books();
    Backbone.Model.apply(this, arguments);
  },
  parse: function(data, options) {
    this.books.reset(data.books);
    return data.library;
  }
});

VS

var Library = Backbone.Model.extend({
  initialize: function() {
    this.books = new Books();
    Backbone.Model.apply(this, arguments);
  },
  parse: function(data, options) {
    this.books.reset(data.books);
    return data.library;
  }
});

1 个答案:

答案 0 :(得分:2)

构造函数”在Backbone设置结构之前运行 在结构的构造函数中调用“ initialize ”。

换句话说,如果您需要在Backbone设置结构之前向对象添加任何内容,您可能需要使用“构造函数”。如果您需要在Backbone设置结构之后向对象添加内容,则可以使用“初始化”。

来自:https://github.com/jashkenas/backbone/issues/720