编程语言
首页 > 编程语言> > Underscore源码阅读极简版入门

Underscore源码阅读极简版入门

作者:互联网

看了网上的一些资料,发现大家都写得太复杂,让新手难以入门。于是写了这个极简版的Underscore源码阅读。

源码:

https://github.com/hanzichi/underscore-analysis/blob/master/underscore-1.8.3.js/src/underscore-1.8.3.js

 

一、架构的实现

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