underscore源码学习(2)

来源:互联网 发布:苏州国云数据 面试难吗 编辑:程序博客网 时间:2024/05/23 14:40

上次主要理解了_ 这个构造函数是怎么实现的
接下来详细的解构underscore的组织解构


解构

整体来说,就是创建一个_的构造函数(类),设置相应的属性 _wrapped(存储实例化是传入构造函数中的参数 obj),设置众多的静态方法,然后将静态方法也通过mixin方法添加到_.prototype源性对象上。

上代码

(function(){    var root = this;    //保存一个undefined    var previouseUnderscore = root._;    //缓存一些原型和变量    ...    //构建_ 对象    var _ = function (obj){        //如果传入的值本身就是_的实例          if(obj instance of _){            return obj;        }        //如果返回值不是_的实例 那么实例化        if( !(this instance of _)) return new _(obj);        //设置_wrapped 属性        this._wrapped = obj;        //实现一个通用迭代器 _iteratee 函数        ...        ...        //设置众多的静态方法        _.each = _.forEach        _.map         _.reduce _.reduceRight        ....        ....        _.chain //实现链式调用的方法        _.mixin //将_的静态方法添加到了 _.prototype 对象上        _.mixin(_)        //添加数组方法到_.prototype上        ...        //改写_.prototype上的value 和 toString toValue方法    }})(this)

ok! 今天就这样 ,后续我们来具体看一些重要的方法实现和逻辑处理!

0 0
原创粉丝点击