在这一章里,我们去学几个 Underscore 里面的跟函数相关的方法。
bind
先来看一下 bind 这个方法。bind 这个词有绑定的意思,你可能在其它的地方也看到过这个词,比如在 jQuery 里面,它的意思就是去绑定事件。不过在 Underscore 这个上下文里面,bind 的意思是为函数绑定一个对象。这样在调用这个函数的时候,在函数的内部,this 这个关键词表示的就是这个对象。
下面,我们去试一下这个方法 ... 先定义一个函数 ... 可以使用函数表达式的方法去定义这个函数 .. (#编辑器) ..
给这个函数起个名字 .. 叫做 nowPlaying ... function ... 在这个函数里面,让它 返回 this 这个关键词 ...
var nowPlaying = function() {
return this;
}
在下面,我们再去调用这个函数 ...
nowPlaying()
你会发现,这个函数会返回 Window 这个对象 .. 也就是,在这个函数里面,this 这个关键词表示的是 Window 这个对象 ...
我们这里有一个 album 对象 ... (#album)
下面用 bind 方法,把它跟 nowPlaying 这个函数绑到一块儿 ..
nowPlaying 等于 _.bind ... 第一个参数是绑定的函数 ... 这里就是 nowPlaying 这个函数 .. 第二个参数是要绑定到这个函数上的对象 ... 输入 album 这个对象 ...
nowPlaying = _.bind(nowPlaying, album)
然后再去调用一下这个 nowPlaying ... nowPlaying()
现在,这个函数返回的就是用 bind 方法跟它绑定到一块儿的那个 album 对象了。
这样我们再去改造一下 nowPlaying 这个函数 .. 可以让它授受一个参数 ... username ...
然后在用 bind 方法绑定的时候,它的第三个参数,就可以是传递给这个函数的参数的值 ... 这里我们可以设置成 'wanghao'
在这个 nowPlaying 的函数里,让它返回一些东西 ..
return username + ',您正在收听的专辑是:' + this.title + ',来自:' + this.artist;
保存 ... 再到控制台上试试 ... 刷新 ..
然后调用 nowPlaying() 这个函数 ...
会返回一串文字 ... wanghao 是 nowPlaying 的参数值,在用 bind 方法绑定的时候传递进来的 ... 继续革命 是来自 album 对象的 title 属性 .. Beyond 是 album 里面的 artist 属性的值 ...