简单实现underscore

70 阅读1分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

一、作用域包裹

使用立即执行函数包裹业务逻辑。

避免全局污染:所有库的逻辑,库所定义和使用的变量全部被封装到了该函数的作用域中。

隐私保护:但凡在立即执行函数中声明的函数、变量等,除非是自己想暴露,否则绝无可能在外部获得。

(function(){
   // ...逻辑代码
})() 

二、_对象

_是一个函数对象,之后所有的 api 都会被挂载到这个到对象上。

三、_()调用

虽然Underscore推崇函数式编程,但也支持面向对象风格的函数调用,仅需要通过 _() 来包裹对象即可。

当我们进行如下调用时: _([2,3,4]) 会创建一个新的underscore对象(从而能够调用underscore提供的方法),并在this._wrapped中存储传入的数据。

四、mixin

五、链式调用