this.parse(属性);在骨干模型源代码中

时间:2012-12-11 17:30:50

标签: javascript oop backbone.js

我只是在阅读骨干来源时想知道一些OO。 http://backbonejs.org/docs/backbone.html(搜索“this.parse(attributes);”)

  Backbone.Model = function(attributes, options) {
var defaults;
attributes || (attributes = {});
console.log('attributes : ', attributes);
if (options && options.parse) {
  //LOOK HERE
  attributes = this.parse(attributes);
}
if (defaults = getValue(this, 'defaults')) {
  attributes = _.extend({}, defaults, attributes);
}
if (options && options.collection) this.collection = options.collection;
this.attributes = {};
this._escapedAttributes = {};
this.cid = _.uniqueId('c');
if (!this.set(attributes, {silent: true})) {
  throw new Error("Can't create an invalid model");
}
delete this._changed;
this._previousAttributes = _.clone(this.attributes);
this.initialize.apply(this, arguments);

};

如何在原型中使用解析? 该方法稍后在_.extend中定义(Backbone.Model.prototype,Backbone.Events,{

2 个答案:

答案 0 :(得分:2)

即使稍后在源代码中将该方法添加到原型中,当从构造函数实际创建Backbone.Model时,它仍然可用(使用原型的其余部分)。

答案 1 :(得分:1)

您在函数中看到的代码将在某人正在执行时执行

new Backbone.Model

到那时,Backbone.Model.prototype也将被定义。因此,属性查找会在parse上找到this.constructor.prototype方法(其中this将指向刚刚创建的Backbone.Model实例)。