你可能不再需要Underscore
2015-11-03 22:30
309 查看
过去几年像 Underscore 和 lodash 等库进入许多JavaScript程序员的工具函数中。虽然这些工具库可以使你的代码写起来更容易,但是他们不一定使代码更简单或更容易理解。
各种工具函数库层出不穷,每个工具库的写法也各有不同,这样给阅读和维护你代码的人也带来了一定的困难,以为他必须了解你使用的这个这个工具库的函数做了什么事情。
JavaScript不断发展,新ES2015和ES2016版本(以前分别称为ES6和ES7)包了一堆新功能特性,并很容易使用它们。这些特性使得工具库以前的一些基本功能已经过时。
所以你可能不再需要Underscore。
例子:
这些例子说明,ES5.1,ES2015和ES2016做这些事情很容易,你可能不需要一个实用程序库了。ES5已经得到了所有现代浏览器和node.js的支持,要是想支持传统浏览器(比如IE8),还需要像es-shim这样的帮助脚本。
Underscore
ES5.1
Underscore
ES5.1
Underscore
ES2015
Underscore(注:pluck也许是map最常使用的用例模型的简化版本,即萃取数组对象中某属性值,返回一个数组。)
ES2015
Underscore
ES2016
Underscore
ES2015
Underscore
ES2015
Underscore
ES2015
Underscore
ES5.1
Underscore
ES2015
Underscore
ES5.1
Underscore
ES2015
Underscore
ES5.1
Underscore
ES5.1
Underscore
ES2016
Underscore
ES2016
Underscore
ES5.1
Underscore
ES2015
Underscore
ES2015
ES2016
Underscore
ES2015
Underscore
ES2015
Underscore
ES2015
任何疑问? Send
us a pull request on GitHub!
PS:主要内容译自:https://www.reindex.io/blog/you-might-not-need-underscore
各种工具函数库层出不穷,每个工具库的写法也各有不同,这样给阅读和维护你代码的人也带来了一定的困难,以为他必须了解你使用的这个这个工具库的函数做了什么事情。
JavaScript不断发展,新ES2015和ES2016版本(以前分别称为ES6和ES7)包了一堆新功能特性,并很容易使用它们。这些特性使得工具库以前的一些基本功能已经过时。
所以你可能不再需要Underscore。
例子:
这些例子说明,ES5.1,ES2015和ES2016做这些事情很容易,你可能不需要一个实用程序库了。ES5已经得到了所有现代浏览器和node.js的支持,要是想支持传统浏览器(比如IE8),还需要像es-shim这样的帮助脚本。
Arrays(数组)
Iterate(迭代)
Underscore_.each(array, iteratee)
ES5.1
array.forEach(iteratee)
Map
Underscore_.map(array, iteratee)
ES5.1
array.map(iteratee)
Find(查找)
Underscore_.find(array, predicate)
ES2015
array.find(predicate)
Get a property from each element in an array(萃取数组对象中某属性值)
Underscore(注:pluck也许是map最常使用的用例模型的简化版本,即萃取数组对象中某属性值,返回一个数组。)_.pluck(array, propertyName)
ES2015
array.map(value => value[propertyName])
Check if array includes an element(检查数组中是否包含某个元素)
Underscore_.contains(array, element)
ES2016
array.includes(element)
Convert an array-like object to array(把一个类数组转换成一个数组)
Underscore_.toArray(arguments)
ES2015
Array.from(arguments)
Create a copy of an array with all falsy values removed.(返回一个除去所有false值的 array副本)
Underscore_.compact(array)
ES2015
array.filter(x => !!x)
Create a copy of an array with duplicates removed(返回 array去重后的副本)
Underscore_.uniq(array)
ES2015
[...new Set(array)]
Find the index of a value in an array(查找某个值在 array 中的索引值)
Underscore_.indexOf(array, value)
ES5.1
array.indexOf(value)
Create an array with n numbers, starting from x(创建一个 N个数字数组,从x开始)
Underscore_.range(x, x + n)
ES2015
Array.from({ length: n }, (v, k) => k + x)
Objects(对象)
Names of own enumerable properties(枚举自身的属性名)
Underscore_.keys(object)
ES5.1
Object.keys(object)
Names of all enumerable properties(枚举所有的属性名,包括继承过来的)
Underscore_.allKeys(object)
ES2015
Reflect.enumerate(object) // 返回一个迭代器
Values(值)
Underscore_.values(object)
ES5.1
Object.keys(object).map(key => object[key])
Create a new object with the given prototype(创建具有给定原型的新对象)
Underscore_.create(proto, propertiesObject)
ES5.1
Object.create(proto, propertiesObject)
Create a new object from merged properties(创建一个合并属性后的新对象)
Underscore_.extend({}, source, { a: false })
ES2016
{ ...source, a: false }
Create a shallow clone of an object(创建一个浅拷贝对象)
Underscore_.clone(object)
ES2016
{ ...object }
Check if an object is an array(检查一个对象是否是一个数组)
Underscore_.isArray(object)
ES5.1
Array.isArray(object)
Check if an object is a finite Number(检查一个对象是否是一个有限的数字)
Underscore_.isFinite(object)
ES2015
Number.isFinite(object)
Functions(函数)
Bind a function to an object(给对象绑定一个函数)
Underscorefoo(function () { this.bar(); }.bind(this)); foo(_.bind(object.fun, object));
ES2015
foo(() => { this.bar(); }); foo(object.fun.bind(object));
ES2016
foo(() => { this.bar(); }); foo(::object.fun);
Utility(使用功能)
Identity function(迭代行数)
Underscore_.identity
ES2015
value => value
A function that returns a value(返回值的函数)
Underscoreconst fun = _.constant(value);
ES2015
const fun = () => value;
The empty function(空函数)
Underscore_.noop()
ES2015
() => {}
任何疑问? Send
us a pull request on GitHub!
PS:主要内容译自:https://www.reindex.io/blog/you-might-not-need-underscore
相关文章推荐
- javascript 实现 java 中String的hashcode方法
- jieba分词
- Fundation中常用结构体
- 第6篇 WPF C# DateGrid绑定二维数组
- IOS 视图跳转的总结
- 【二叉树】关于二叉树的后续遍历遍历以及栈
- CodeForces 592C (胡搞)
- $(document).on('click','.remove',function(){})
- JOS大内核锁
- 声光控延时开关设计原理
- Android设计模式之观察者模式
- [IOS]Xcode各版本官方下载及百度云盘下载, Mac和IOS及Xcode版本历史
- LinkedList 源代码
- 软件测试职业发展规划图
- 可图的度序列判断与构造
- c# 循环语句练习题;
- 新闻上下滚动jquery 超简洁
- jQuery学习笔记之jQuery的Ajax(3)
- jQuery学习笔记之jQuery的Ajax(3)
- 筛法求1000000以内素数个数---时间复杂度为o(n)