(function(factory) { // 在这里是backbone模块化的一个接口。支持AMD,CMD和全局变量模式。代码很好理解。 })(function(root, factory, _, $) { // 各种参数和函数的定义 Backbone.noConflict = function(){}; var Events = Backbone.Events = {}; // 然后是各种Events方法的添加 // Events在Backbone里面非常重要,Model,Collection和View都extend了它。(不知道怎么说才自然...)所以他们都可以发起订阅事件,发起事件。当然,用户也可以自己拿自己的对象拓展一下,那样也可以订阅发起事件了~ var Model = Backbone.Model = function(){}; _.extend(Model.prototype, Events, { // 这里是各种对Model.prototype的拓展,定义各种方法 }); var Collection = Backbone.Collection = function(){}; _.extend(Collection.prototype, Events, { // 这里是各种对Collection.prototype的拓展,定义各种方法 }); var View = Backbone.View = function(){}; _.extend(View.prototype, Events, { // 这里是各种对View.prototype的拓展,定义各种方法 }); Backbone.sync = function(){}; Backbone.ajax = function(){}; var Router = Backbone.Router = function(){}; _.extend(Router.prototype, Events, { // 这里是各种对Router.prototype的拓展,定义各种方法 }); var History = Backbone.History = function(){}; _.extend(History.prototype, Events, { // 这里是各种对History.prototype的拓展,定义各种方法 }); // 用History定义实例 Backbone.history = new History; // 接下来是helper函数extend var extend = function(){}; Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend; // 其他的还有urlError,warpError函数 return Backbone; });
原文地址:https://segmentfault.com/a/1190000006697372