scr*_*key 66 javascript backbone.js
骨干模型上的initialize和constructor之间有什么区别.
当我扩展骨干模型(ParentModel)时,我使用initialize方法设置任何默认属性.但每当我基于ParentModel创建一个Model时,我都会使用构造函数来运行任何初始功能.我这样做是因为它有效,但有人在工作时问我为什么我同时使用初始化和构造函数,除了它有效之外我没有一个好的答案.我可以花时间阅读源代码来解决这个问题,但在这里提问并获得正确的答案似乎要容易得多.
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
},
Run Code Online (Sandbox Code Playgroud)
Boy*_*oyo 88
constructor在Backbone建立结构之前运行.initialize在结构的constructor函数内部被调用.所以基本上如果你需要在Backbone设置结构之前增加任何东西,请在Backbone设置结构使用后使用,constructor如果你需要增加任何东西initialize.
(来自Github关于这个主题的讨论)
Sud*_*han 30
constructor是Backbone用来设置自己的功能 - 创建模型,设置事件和进行各种其他设置.在覆盖这个时要非常小心,因为如果你通过覆盖或遮蔽方法来防止Backbone代码运行,你将会得到难以调试的奇怪错误.
initialize另一方面,Backbone在其内部管道完成后调用其对象的功能.如果您没有做任何专门用于干扰正常Backbone功能的事情,请使用initialize.
如果您使用的是CoffeeScript,则可能更直观constructor.(这是给我的).super但请确保你总是打电话.
| 归档时间: |
|
| 查看次数: |
20997 次 |
| 最近记录: |