首页 > 代码库 > Backbone.View.extend之后的构造函数实例化经历了一些什么处理
Backbone.View.extend之后的构造函数实例化经历了一些什么处理
首先看Backbone.View的构造函数源码:
var View = Backbone.View = function(options) { this.cid = _.uniqueId(‘view‘); // 为需要的客户端模型或DOM元素生成一个全局唯一的id。如果prefix参数存在, id 将附加给它。就是生成_id属性 值是唯一的。 options || (options = {}); _.extend(this, _.pick(options, viewOptions));//这里挑选options下面的参数赋给构造函数的prototype对象 this._ensureElement();// 看下面的_ensureElement this.initialize.apply(this, arguments); 执行我们写的initialize函数了 this.delegateEvents();//绑定我们events json中的事件 };
_ensureElement: function() { //这里主要做的就是创建了一个View层的容器,即$el 并赋予attributes属性和class name
if (!this.el) {
var attrs = _.extend({}, _.result(this, ‘attributes‘));
if (this.id) attrs.id = _.result(this, ‘id‘);
if (this.className) attrs[‘class‘] = _.result(this, ‘className‘);
var $el = Backbone.$(‘<‘ + _.result(this, ‘tagName‘) + ‘>‘).attr(attrs);
this.setElement($el, false);
} else {
this.setElement(_.result(this, ‘el‘), false);
}
}
// Cached regex to split keys for `delegate`.
var delegateEventSplitter = /^(\S+)\s*(.*)$/; // List of view options to be merged as properties.
var viewOptions = [‘model‘, ‘collection‘, ‘el‘, ‘id‘, ‘attributes‘, ‘className‘, ‘tagName‘, ‘events‘];
Backbone.View.extend之后的构造函数实例化经历了一些什么处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。