underscore源码学习(2)

上次主要理解了_ 这个构造函数是怎么实现的
接下来详细的解构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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值