什么是对骨干模型初始化和构造函数之间的区别(What's the difference be

2019-06-23 13:50发布

什么是对骨干模型初始化和构造函数之间的区别。

当我延伸的骨架模型(ParentModel)我使用初始化方法来设置任何默认属性。 但每当我创建一个基于ParentModel模型我使用构造运行任何INTIAL功能。 我这样做是因为它的工作原理,但有人在工作,问我为什么用这两种初始化和构造函数和我没有一个很好的答案除了它的工作原理。 我会花时间阅读,虽然源代码来弄明白,但它似乎更容易让这里得到正确的答案。

var ParentModel = Backbone.Model.extend({
  initialize : function() {
    // code here
  },
});


var Model = ParentModel.extend({
  constructor : function (options) {
    Backbone.Model.prototype.constructor.call(this, options);
    // code here
   },

Answer 1:

constructor运行之前骨干设立的结构。 initialize被称为结构的内部constructor函数。 所以基本上,如果你需要之前骨干设置结构,以增加任何东西,使用constructor ,如果你需要骨干建立结构使用后增加任何initialize

(从上所述受试者Github的讨论 )



Answer 2:

constructor是骨干网使用自身设置功能-创建模型,设置事件,并做各种其他设置的。 要非常小心覆盖这一点,因为如果你防止骨干代码通过覆盖或遮蔽的运行方法,你会得到那些难以调试奇怪的错误。

initialize ,另一方面是一旦它完成了其内部的管道是骨干其对象调用一个函数。 如果你没有做任何事情,真实专门用于正常的骨干功能的干扰,只使用初始化。

如果您使用的CoffeeScript,它可能是更直观的使用constructor 。 (这是给我的)。 只要确保你总是叫super ,虽然。



文章来源: What's the difference between initialize and constructor on a backbone model