TC39 即将完成一项技术提案——Change Array by copy。它现在已经到了第 3 阶段,这意味着主要的浏览器供应商将在不久的将来实施它。本文将为您简要介绍它们。
具体来说,以下函数属性将被导入Array.prototype和TypedArray.prototype:
1. toReversed()
与上一个相比Array.prototype.reverse(),Array.prototype.toReversed()不改变原来的数组。
例如:
2. toSorted(compareFn)
与Array.prototype.toSorted(compareFn)类似,它不会像Array.prototype.sort(compareFn)改变原始数组
3. toSpliced(start, deleteCount, …items)
前一个Array.prototype.splice(start, deleteCount, …items)可以从数组中实现增删改
然后Array.prototype.toSpliced(start, deleteCount, …items)类似于splice,但它不会改变原始数组
4. with(index,value)
Array.prototype.with(index, value)可以为数组的索引项赋值,类似于array[index] = value. 但它返回原始数组的更改副本,对原始数组没有任何影响。
可以看出,这些方法保持原始数组不变,返回一个改变的副本。这在某些情况下很有用。它目前在生产中不可用,TC39 还提供了它的polyfill.js(极简参考实现)。
从polyfill.js也可以看出,这些方法返回原始数组的浅拷贝。一旦原始数组存储了引用类型数据,你只有非常了解引用类型数据的特性来避免意外情况。
个人感觉: 最后一个with还是很实用的
我是南飞雁,你可以叫我飞雁,我是一名奋斗者,在实现财富自由的路上……
我喜欢分享,也喜欢思考;我有自己的人生规划和梦想;但有时也很迷茫……
我从事IT行业,研究的技术领域相对比较多而杂: PHP、MySQL、Linux、JavaScript、Node.js、NoSQL、PhotoShop、音视频处理、架构集群、网络通信、生活技巧、人生三观、做人做事读书……
我总是会在自己的公众号和掘金上写下自己的所思所想和近期要做的事,希望你关注我,我是一个奋斗者,我叫南飞雁