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'];

 

转载于:https://www.cnblogs.com/iwang5566/p/6444023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值