javascript - 关于Underscore.js的源码问题

查看:76
本文介绍了javascript - 关于Underscore.js的源码问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var _ = function(obj) {
    if (obj instanceof _) return obj;
    if (!(this instanceof _)) return new _(obj);
    this._wrapped = obj;
  };
 
 

我想问下为什么 var _ 这个变量要指向这个函数,有什么意义吗?
我看了看源码好像也没有用到_()这样的函数调用,很困惑。。。

 
  _.first = _.head = _.take = function(array, n, guard) {
    if (array == null) return void 0;
    if (n == null || guard) return array[0];
    return _.initial(array, array.length - n);
  };

  _.initial = function(array, n, guard) {
    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
  };
  

从上面看的话,_是个对象,frist和initial是_的方法才对,那为什么直向一个函数,我知道函数也是对象的一种,那为什么不直接new Object()呢?
我第一次看源码,看了高程和JUQERY,总感觉API记住就好,原理还是要懂才行。
是不是我对某个知识点了解的不够深?

解决方案

不要连API都没有完整的扫一遍的就去看源码,这样只会越看越懵逼。
http://www.css88.com/doc/unde...
这是API中链式调用使用的 _() 方法。

下图是高程的截图,讲述了为什么要用这种语法。

这篇关于javascript - 关于Underscore.js的源码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆