对象属性的合并,不是后面的同名属性会覆盖前面的同名属性吗,不管用户有没有传参进来不都是options对象里的timeoutTime属性会覆盖外面的这个属性吗
登陆购买课程后可参与讨论,去登陆吧
同学你好,对于你的问题解答如下
1、对象属性合并时确实是后面的同名属性会覆盖前面的同名属性
2、不是的。options才表示用户传过来的参数代码中设置的timeoutTime:30000可以理解一个默认值当用户传递的options参数中有timeoutTime属性那么就会覆盖timeoutTime:30000如果用户传递的options参数中没有timeoutTime那么就会使用这个默认值。
祝学习愉快~
<script> const DEFAULT = { timeoutTime: 0 }; const options = {...DEFAULT,...{}}; const result = {timeoutTime:30000,...options}; console.log(result.timeoutTime); </script>
可是老师,为什么这里输出的是options里面的默认值
同学你好,因为const options = {...DEFAULT,...{}}; 这句代码,将DEFAUTL和空对象合并到一起,此时options对象中存在timeoutTime属性 值为0,可以输出查看下,如下:
之后再执行const result = {timeoutTime:30000,...options};这句代码时,options中的同名属性timeoutTime会覆盖前面的,所以最终result对象中timeoutTime属性值为0
老师,我应该想明白了,我以为后面传入的options就是构造函数中的this.options。。。。。。其实{timeoutTime:3000 , ...options}整体就是用户传入的参数。。。。。。有点尴尬
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
入行前端,是明智的选择!市场需求大,就业前景好,入行门槛低,小白易上手 全新升级:技术更新,Vue3.0/TypeScript/React17.x; 技术更全面,从0基础到全栈开发再到大型项目构建
157 1
75 1
31 2
200 5
155 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星