主干模型上的初始化和构造函数有什么区别
What's the difference between initialize and constructor on a backbone model
在
主干模型上初始化和构造函数有什么区别。
当我扩展主干模型(父模型)时,我使用 initialize 方法来设置任何默认属性。但是,每当我基于 ParentModel 创建模型时,我都会使用构造函数来运行任何初始功能。我这样做是因为它有效,但工作中有人问我为什么我同时使用初始化和构造函数,除了它有效之外我没有一个好的答案。我可以花时间阅读源代码来弄清楚,但在这里问并获得正确答案似乎要容易得多。
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
},
constructor
在Backbone 设置结构之前运行。 initialize
在结构的constructor
函数中调用。所以基本上如果你需要在 Backbone 设置结构之前增强任何内容,如果你需要在 Backbone 设置结构后增强任何内容,请使用constructor
使用initialize
。
(来自Github关于该主题的讨论)
constructor
是Backbone用来设置自己的函数 - 创建模型,设置事件以及执行各种其他设置。重写时要非常小心,因为如果通过重写或隐藏方法来阻止 Backbone 代码运行,则会遇到难以调试的奇怪错误。
另一方面,initialize
是 Backbone 在完成内部管道后调用其对象的函数。如果您没有执行任何专门用于干扰正常主干功能的操作,只需使用初始化即可。
如果您使用的是 CoffeeScript,使用 constructor
可能会更直观。(这是给我的)。不过,请确保您始终致电super
。
相关文章:
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 当一个重要的构造函数参数丢失时应该发生什么
- JavaScript 构造函数中的“var”变量会发生什么
- 在JavaScript中调用array()作为构造函数时,返回的是什么类型的数组
- Javascript - 这些构造函数之间有什么区别
- 我的三角形区域构造函数有什么问题
- 构造函数中的方法和创建构造函数后函数上的方法有什么区别
- 在ES2015中定义一个类,构造函数方法是什么以及为什么它是必不可少的
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 什么是原型?构造函数或其他对象
- JavaScript构造函数序言的目的是什么
- x 不是一个函数.你期望 Object.create 用构造函数做什么
- Javascript 对象的推荐构造函数是什么?
- 在构造函数内部和外部定义公共方法之间有什么区别吗?
- JavaScript 中的 void、eval 和 Function 构造函数有什么区别?
- 在 JavaScript 中,构造函数和作为构造函数调用的返回对象的函数之间有什么区别
- 主干模型上的初始化和构造函数有什么区别
- 这种实例化构造函数方法的风格是什么
- 在Javascript中,在什么条件下只在构造函数中使用“this”是合适的
- 什么's使用instanceof和检查构造函数之间的区别