ES6 语法二(部分)
摘要
ES6 是 ECMAScript 6.0 的简称,是 JavaScript 语言的下一代标准。ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。
对象的新增方法
Object.is()
解决的问题:ES5 比较两个值是否相等时只有两个运算符:==
和 ===
。
==
会自动转换数据类型
let a = '1' + 1 console.log(a) // "11" 复制代码
===
的 NaN
不等于自身,+0
等于 -0
用法:
Object.is(+0, -0) object.is(NaN, NaN) 复制代码
object.assign()
Object.assign(target, source1, source2...)
方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target);
const target = { a: 1 } const source1 = { b: 2 } const source2 = { c: 3 } Object.assign(target, source1, source2) // { a:1, b:2, c:3 } 复制代码
注意:
参数不是对象,会先转换成对象
首参数如果是
null
和undefined
,会报错
// 报错 Object.assign(null) Object.assign(undefined) // 不报错 Object.assign(a: 1, null) Object.assign(a: 1, undefined) 复制代码
Object.assign()
是浅拷贝,源对象某个属性值是对象的话,目标对象拷贝得到的是这个对象的引用;同名属性会替换
const target = { a: { b: 'c', d: 'e' } } const source = { a: { b: 'hello' } } Object.assign(target, source) // { a: { b: 'hello' } } 复制代码
Object.getOwnPropertyDescriptors()
__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()
Object.keys()
返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。
let obj = { foo: 'bar', baz: 42 } Object.keys(obj) // ["foo", "baz"] 复制代码
Object.values()
返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。
let obj = { foo: 'bar', baz: 42 } Object.values(obj) // ["bar", 42] 复制代码
Object.entries()
返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。
let obj = { foo: 'bar', baz: 42 } Object.entries(obj) // [["foo", "bar"], ["baz", 42]] 复制代码
Object.fromEntries()
Object.entries()
的逆操作,用于将一个键值对数组转为对象。
Object.fromEntries([ ["foo", "bar"], ["baz", 42] ]) // { foo: "bar", baz: 42 }
作者:新生代IT民工
链接:https://juejin.cn/post/7021073225375285279