Giter Club home page Giter Club logo

Comments (6)

zhongdeming428 avatar zhongdeming428 commented on August 16, 2024

目标修订

经过多天的不懈奋战,我终于成功的放弃jQuery源码。这是我第一次阅读工具库源码,我决定更换一个简单一点的工具库源码来阅读,这次我选择的是underscore。underscore代码更加少,多是实现一些常用功能的API,有利于我理解源码,学习如何写简单的轮子,从这个库开始我的源码阅读之路。

from mymemorandum.

zhongdeming428 avatar zhongdeming428 commented on August 16, 2024

学习笔记

underscore.js源码中,有一个基础函数——_.isObject(){},源码如下:

  // Is a given variable an object?
  _.isObject = function(obj) {
    var type = typeof obj;
    return type === 'function' || type === 'object' && !!obj;
  };

该函数用于判断传入的参数是否是一个非空对象,所以我们看到函数的返回值除了前半部分的type === 'function' || type === 'object'之外,还有后半部分的判断。

经查阅,双感叹号表示将参数转化为Boolean值,转化后的值与Boolean()函数的转化效果一样。之所以要这么转化一下,就是为了防止传入的参数是null值,确保我们判断的值是一个非空对象(可以是Object,Array, Function等等)。

from mymemorandum.

zhongdeming428 avatar zhongdeming428 commented on August 16, 2024

最新进度

最近一直在阅读源码,顺序阅读,难免有些乏味。为了增加阅读兴趣以及方便总结学习笔记,我决定参照API手册,然后针对功能类似的API阅读它们的源码,然后总结自己的经验。

计划

  • 判断JavaScript类型的API源码总结:

    • isArray
    • isObject
    • isFunction
    • isString
    • isNumber
    • isBoolean
    • isDate
    • isRegExp
    • isNaN
    • isNull
    • isUndefined
  • 判断特殊类型的API源码总结:

    • isEqual
    • isFinite
    • isEmpty
    • isElement
    • isArguments

第一部分类型判断已经写完。
_.isEqual函数有一点难度,这两天都在阅读,希望能提交PR。

  • 2018.03.04 终于看完了_.isEqual部分,并且写完了学习笔记。
  • 2018.03.05 学习完了_.debounce函数,基本掌握,并且写好了学习笔记。
  • 2018.03.06 发布在掘金的学习笔记收到了很多“喜欢”,非常开心!再接再厉!
    由于今天开始实习了,所以没有阅读多久的underscore的源码,希望明天能把
    throttle函数的解析写出来。

from mymemorandum.

zhongdeming428 avatar zhongdeming428 commented on August 16, 2024

最新进度

  • 2018.03.10 这一周基本都在实习,没有什么时间阅读underscore源码,今天发表了一篇文章。
    已完成——《理解underscore中的去抖函数》、《理解underscore中的节流函数》
    明天任务:函数部分的解读,包括partial、once、before、after、bind等。
  • 2018.03.11 今天写了工具函数restArgs的理解文章,虽然阅读了partial、once、before、bind的源码,但是还没来得及写文章,关于executeBound函数的理解还不够透彻,必须理解好了再写笔记。
  • 2018.03.22 前几天写了_.bind的阅读笔记,这几天忙于公司的第一个sprint,没什么时间阅读源码。
  • 2018.03.31 三月已经快结束了,忙于工作一直没有更新,下一步目标是解读数组处理函数。包括flatten、without、difference等。
  • 2018.04.01 今天学习收获很大,完成了uniq数组去重函数源码的阅读,然后完成了数组求交并差集的源码阅读,并且写了两篇笔记。

from mymemorandum.

zhongdeming428 avatar zhongdeming428 commented on August 16, 2024

最新进度

毕设已经基本完成,接下来准备对论文进行小修小改,以及准备答辩,时间比之前更充裕,准备不时写一些underscore源码阅读笔记。

下一步任务:

  • _.template模板引擎
  • 架构设计
  • 深入了解webpack:smile:
  • 手动搭建react开发环境
  • 手动搭建Vue开发环境
  • 写一个微小的create-react-app

from mymemorandum.

zhongdeming428 avatar zhongdeming428 commented on August 16, 2024

结语

Underscore基本都已经解读完毕,接下来准备毕设答辩,要准备PPT什么的了,以后大概也不会再解读Underscore源码了,主要转向其它知识的学习。

from mymemorandum.

Related Issues (13)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.