阅读 87

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 } 复制代码

注意:

  • 参数不是对象,会先转换成对象

  • 首参数如果是 nullundefined,会报错

// 报错 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


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐