Underscore 是一个很是实用的Javascript类库。html
经过研究他能提升自身的JS水平。浏览器
咱们看到整个代码被 (function() { /* 代码 */ }.call(this)); 包裹了起来。函数
(function() { // 代码 }.call(this));
这是什么意思?做用是什么?先不着急,咱们经过一个个例子来学习。学习
这个其实很好理解this
// 这是一个普通函数 var a = function(){ alert("11") }
若是运行这段JS脚本,不会弹出11。由于没有调用a函数。spa
可是注意若是函数名后面添个(),就会当即运行这个函数code
var a = function(){ alert("11") } a()
函数通常是有名字的,好比上面的函数就叫a,没有名字的函数叫匿名函数。咱们知道JS支持匿名函数。htm
JS中当一个匿名函数被括起来,而后再在后面加一个括号,这个匿名函数就能当即运行起来!对象
//当即弹出11 (function (){ alert("11") })()
underscore的代码包裹在一个匿名自执行函数中。不少类库jQuery都是这么作。blog
好处:
1. 由于会当即执行,避免变量污染
(function() { var jQuery = { VERSION : '1.0', a: function(){ alert("11"); } }; window.jQuery = jQuery; $ = jQuery; })(); //$.a() $.VERSION;
//而call(this)方法,是指当定义完后将this自己经过call()调用自己来实现当即执行。
//在浏览器环境 全局this 就是window对象
(function(){ //执行语句 }).call(this)