为什么Underscore.js定义函数别名

you*_*sco 1 javascript prototypejs underscore.js

Underscore.js定义了像_.each (alias: forEach)和的函数的别名_.map (alias: collect),我不明白为什么.

我最初认为这是为了避免浏览器本身没有实现这些功能的问题,我的想法是调用[].map()会在IE7和8中引发错误,因为他们没有在本地实现它但发现自从Underscore以来没有问题定义那些.

然后我认为它可能与其他JS库(例如Prototype)的冲突有关,这些库实现了类似命名的函数但后来意识到,在_.map自原型实现的情况下,拥有别名实际上并没有区别.map,.colelct而且实际上我已经一直使用原型的实现(例如this.collection.collect(...)).

到目前为止它似乎没有任何区别,它没有产生任何问题,但我真的想知道为什么会发生这种情况.

geo*_*org 5

我想别名的目的是为了使库具有不同背景的程序员更熟悉(例如,collectinclude在Ruby中使用,fold在功能性语言等).

此外,例如,别名可以在某些情况下提高可读性

list.select(...).reject(...)
Run Code Online (Sandbox Code Playgroud)

"听起来"好于

list.filter(...).reject(...)
Run Code Online (Sandbox Code Playgroud)