发布网友 发布时间:2022-09-23 04:12
共1个回答
热心网友 时间:2024-10-27 12:33
定义对象的属性,有两种方式
在ES6中拓展了ES5的缺陷,在使用字面量定义对象时,ES5只允许第一种方式去定义,比如:
而ES6中拓展了它的定义方式,允许第二种方式去字面量的方式去定义对象
其次还允许这种方式去定义对象内部的方法名
但是需要注意的是,这种写法不支持简写,比如:
第二种写法一定不要去简写,会报错!!!
ES5比较两个值是否相等,只有两个运算符:相等运算符(==)以及严格相等运算符(===)。它们都有自身的缺点,前者会自动转换数据类型,比如:123 == '123' 相等运算符会自动处理为true值,*的进行了数据类型的转换,而后者严格相等运算符的NaN不等于自身,以及+0等于-0。
ES6提出同值相等算法,Object.is()就是部署这个算法的新方法,它用来比较两个值是否严格相等,类似于严格相等运算符(===)的提升。
使用示例
如果在合并对象的时候属性名有重复的,那么后面的就会去覆盖前面的
用于循环json和对象
遍历json的属性
遍历json的属性值
遍历键值对
由于解构需要等号两边匹配一致,因此,左边是对象,而右边不是一个对象,那么就会出现报错。
注意:解构赋值的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象或是函数),那么解构赋值拷贝的是这个值的引用,而不是这个值的副本。比如:
指向的是同一个引用对象
扩展运算符可以拷贝对象用于取出参数对象的所有可遍历的属性,拷贝到当前对象之中。