我想知道是否有人知道扩展运算符的使用方法。
cosnt newArray = [...oldArray];
使lodash方法成为可能。
const newArray = _.clone(oldArray);
过时了吗?
或者更重要的是,哪种方法更有效?
*注意这是一个浅克隆,只想在新数组中获取对象引用。
谢谢!
cosnt newArray = [...oldArray];
使lodash方法成为可能。
const newArray = _.clone(oldArray);
过时了吗?
或者更重要的是,哪种方法更有效?
*注意这是一个浅克隆,只想在新数组中获取对象引用。
谢谢!
看起来使用clone
比展开运算符更快:https://www.measurethat.net/Benchmarks/ShowResult/81691。
然而,由于JavaScript是一种昂贵的资源,向程序中添加库来完成原生js本来能够完美执行的任务可能并不是一个好主意。
_.clone
可以用于许多除数组以外的东西:
该方法基于结构化克隆算法,并支持克隆数组、数组缓冲区、布尔值、日期对象、映射、数字、对象对象、正则表达式、集合、字符串、符号和类型化数组。参数对象的自有可枚举属性被克隆为普通对象。对于无法克隆的值(如错误对象、函数、DOM节点和WeakMaps),返回一个空对象。
相比之下,在数组上下文中使用扩展语法只能处理可迭代对象(如数组和某些其他具有Symbol.iterator
属性的集合),并且只能生成普通数组。许多东西都可以使用_.clone
进行浅克隆,但使用数组扩展无法实现,例如普通对象。
还要考虑浏览器兼容性-扩展语法需要ES6支持,而调用库方法_.clone
则不需要。
newArray = oldArray.slice()
或newArray = oldArray.concat()
更过时。 - Bergi