underscore源码分析——框架
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

underscore将_据为自己的全局变量,所有方法都作为_对象的属性。

```js

(function() {
  var root = this;  //这里的this表示闭包内的全局
  var previousUnderscore = root._;  //将_原值储存在另外一个变量中

  //...省略的变量声明...

  var _ = function(obj) {
    if (obj instanceof _) return obj;
    if (!(this instanceof _)) return new _(obj);
    this._wrapped = obj;
  };  //_为一个函数对象,它的实例服从单例模式。

  if (typeof exports !== 'undefined') {
    if (typeof module !== 'undefined' && module.exports) {
      exports = module.exports = _;
    }
    exports._ = _;
  } else {
    root._ = _;
  }  //通过一个简单的兼容,实现node.js与浏览器都可以很好的调用underscore

  _.VERSION = '1.4.4';

  //...省略的属性赋值...

}).call(this);  //将闭包内的全局_属性送给外面的this

```

正如你所见,超链接:《JavaScript中的call(this)》一文正是来自此处。

你好,我是Bolt。本文为Bolt原创,首发于h-won之队

可以随意引用,无需注明出处。

欢迎大神们指出错误,如回复在首发之处,感激不尽

评论
发表评论
6年前

精神值得鼓励,可是质量嘛...... 我怎么就感觉直接是把 underscore 官网中的“ Annotated Source ”直接翻译出来呢? 文章太短了。这篇根本什么都没说。 希望...加油。

WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
underscore.js源码分析【半途而费】

Bolt 在本专栏已停止更新。

由于本屌实力不够,没有能力维持本专栏,故个人停止更新。

但仍欢迎对underscore.js有兴趣的各大神来此专栏发表文章。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。


本专栏

  • 阅读 面向 新手
  • 写作 面向 进阶
  • 指正 面向 大神

新手

  • 这里的新手并不是代表初学者,而是已经掌握了JavaScript的基本用法
  • 通过深入知名函数库underscore.js,了解一些常见原生函数的用法
  • 学会使用简单的underscore.js扩展方法
  • 知名函数库的源码,也不过如此嘛

进阶

  • 感觉JavaScript的知识要点都掌握了,面对项目却不知如何下手
  • 读点源码,大项目的看不懂?那就从underscore.js开始
  • 养成良好的写作习惯,培养优秀的表达能力,快来专栏发文吧
  • 知名函数库的源码,也不过如此嘛

大神

  • 如果您也想来专栏发文,热烈欢迎
  • 请您更多的关注我们专栏文章内的错误
  • 对某篇文章不满意,您可以对相关内容整理后重发
  • 知名函数库的源码,还是以实用为主

专栏发文要求

  • 以underscore.js为中心,扩展到backbone.js等相关函数库
  • 以指导新人、提升自己两个基本点
  • 坚持【入门式】,【基础性】,【总结性】,【普及式】四项基本原则
  • 实践是检验源码的唯一标准
  • 扩展才是硬道理,无bug压倒一切

您好,我是Bolt。Bolt本人发表的文章,将会首发于h-won之队

欢迎大神们指出错误,如回复在首发之处,感激不尽

我的收藏