Underscore源码阅读极简版入门
作者:互联网
看了网上的一些资料,发现大家都写得太复杂,让新手难以入门。于是写了这个极简版的Underscore源码阅读。
源码:
一、架构的实现
1.1:架构
(function(){ var _={}; this._=_; }.call(this));
1.2:引入exports判断,如果不支持exports则继续使用this
(function(){ var root = this; var _={};if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = _; } exports._ = _; } else { root._ = _; } }.call(this));
1.3:对_进行进一步实例化判断:
(function(){ var root = this; var previousUnderscore = root._;//保存_ //初始化 var _=function(obj){ if(obj instanceof _) return obj; if(!(this instanceof _)) return new _(obj); this._wrapped=obj;//保存obj }; //导出_ if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = _; } exports._ = _; } else { root._ = _; } }.call(this));
第一步就先这到这里,接下来就是常用函数的包装了。先不用管其他函数。
二、常用函数包装
(function(){ var root = this; var previousUnderscore = root._;//保存_ //初始化 var _=function(obj){ if(obj instanceof _) return obj; if(!(this instanceof _)) return new _(obj); this._wrapped=obj;//保存obj }; //导出_ if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = _; } exports._ = _; } else { root._ = _; } //添加判断Boolean类型方法 _.isBoolean = function(obj) { return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; }; }.call(this));
恭喜你,接下来就可以直接使用_.isBoolean了。
标签:exports,obj,简版,module,源码,Underscore,._,var,root 来源: https://www.cnblogs.com/walkingp/p/10750965.html