[javascript] EcmaScript 6 spread
最近小弟在实现一个Class方法时,为了保证在不用new关键字的情况下也能产生实力,又要传递参数。所以费了很大力气,但是代码还是不够优美。今晚终于找到答案,解决方案就是es6的 spread
具体案例请见https://github.com/Neverland/Class/blob/master/script/class.js
es6 官方对spred的解释是
-
Replace an array or array-like actual parameter value with its elements as positional parameters
-
Let
new
compose with athis
-free form ofapply
-
Remove (some day, and in similar future methods) automagic (and half-the-time wrong) array flattening, e.g. in
Array.prototype.concat
按照在下理解就是
1.把类数组或者数组这类实际参数值替换成多个位置参数
2.在使用new时不必考虑使用apply的情况
3.移除自动化数组扁平化
语法:
...非常简单 三个点
具体案例:
1.如果同时使用new 和apply会导致语法错误 // new Elements.apply(document.getElementsByTagName('div'));
new Elements(...document.getElementsByTagName('div'));
2. 结构赋值,可以区段拆解
var [a,...b]=[1,2,3,4];<br>a //1;<br>b //[2,3,4] |
3.调用函数时,直接拆解类数组或数组参数
var a=[1,2,3,4];
如果调用某个函数时,把数组a拆解成4个值传入,以前要借助apply
add.apply( this ,a); |
现在
add(...a); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库