首页 > 编程知识 正文

es6对象新增方法,es6对象的方法

时间:2023-05-04 17:51:57 阅读:8781 作者:4096

es6扩展运算符三个点. es6扩展运算符三个点.对象扩展运算符数组扩展运算符的总结

es6扩展运算符三个点(…)对象的扩展运算符

理解对象的扩展运算符其实很简单,只要记住一句话就可以了:

对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

let bar={ a: 1,b: 2 }; let baz={ .bar }; //(a :1, )上述方法实际上等价于:

let bar={ a: 1,b: 2 }; letbaz=object.assign({},bar ); //{ a: 1,b: 2 } Object.assign方法用于合并对象,并将源对象(source )的所有可枚举属性添加到目标对象(target )中

Object.assign方法的第一个参数是目标对象,所有后续参数都是源对象。 (如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性)。

同样,将用户自定义的属性放在扩展运算符之后将复盖扩展运算符内部同名的属性。

let bar={a: 1,b: 2}; let baz={.bar, {a:2,b:}; //{a: 2,b: 4}利用上述特性,可以轻松修改对象的某些属性。 redux的reducer函数规定必须为一个纯函数。 如果不太清楚什么是亚纯函数,请参见这里。 不能直接修改reducer的state对象。 可以复制使用扩展运算符修改了路径的对象,然后创建并返回新对象。

需要注意的是,将扩展运算符复制到对象实例是轻拷贝。 什么是光拷贝? 我们知道javascript有两种数据类型:基本数据类型和引用数据类型。 基本数据类型按值访问。 典型的基本数据类型包括Number、String、Boolean、Null和Undefined,它们在复制这些变量时被完全复制。 引用数据类型例如为Array,复制时复制的是对象的引用,原始对象发生变化时,复制的对象也随之发生变化。 例如:

let obj1={ a: 1,b: 2}; let obj2={ .obj1,b: '2-edited'}; 控制台. log (obj 1; //{a: 1,b:2}console.log(obj2); //{a: 1,b: '2-edited'}上例中扩展运算符的复制对象是基本数据类型,因此对obj2的更改不会影响obj1,但这样更改时:

let obj1={ a: 1,b: 2,c: {nickName: 'd'}}; let obj2={ .obj1}; obj2.c.nickName='d-edited '; 控制台. log (obj 1; //{a: 1,b: 2,c : { nickname : ' d-edited ' } console.log (obj2); //{a: 1、b: 2、c : { nickname : ' d-edited ' }在此可以看出,对obj2的修改是在复制时复制的,因为obj1的对象c是参考数据类型

数组的扩展运算符扩展运算符也可以应用于数组的操作。

将数组转换为参数序列functionadd(x,y ) { return x y; } const numbers=[ 4,38 ]; 可以复制add(numbers )/42数组。不希望通过以下方法直接复制数组:

constar R1=[ 1,2 ]; const arr2=arr1; arr2[0]=2; arr1///[ 2,2 ]原因如前所述,使用扩展运算符很有用:

constar R1=[ 1,2 ]; const arr2=[.arr1]; 或者,请记住扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中这个词。 其中参数对象是数组,数组中的所有对象都是基本数据类型,将所有基本数据类型重新复制到新数组中。

扩展运算符可以与构造赋值组合,数组const [first, rest]=[1、2、3、4、5]; first//1rest//[ 2,3,4,5 ]需要注意的是:

如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。

const [.rest,last ]=[ 1,2,3,4,5 ]; const [first, rest,last ]=[ 1,2,3,4,5 ]; //错误报告扩展运算符还可以将字符串转换为真正的数组。 ' hello' ]//['h '、' e '、' l '、' l '和' o']任何迭代器接口上的对象都可以使用扩展运算符转换为真正的数组(例如

典型的APP应用程序是可以将一些数据结构转换为数组,包括:

//arguments对象function foo ({ constargs=[ . arguments ]; 用于替换es5中的array.prototype.slice.call (arguments )表示法。

现在总结一下扩展运算符的使用方法。 虽然介绍的不完整,但是是最常见的使用方法。

下面的是我的公众号二维码图片,欢迎关注。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。