返回顶部
首页 > 资讯 > 精选 >es6新增对象如何使用
  • 828
分享到

es6新增对象如何使用

2023-06-30 17:06:03 828人浏览 薄情痞子
摘要

本文小编为大家详细介绍“es6新增对象如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6新增对象如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、属性的简写ES6中,当对象键名与对应值名相等的

本文小编为大家详细介绍“es6新增对象如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6新增对象如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    一、属性的简写

    ES6中,当对象键名与对应值名相等的时候,可以进行简写

    const baz = {foo:foo}// 等同于const baz = {foo}

    方法也能够进行简写

    const o = {  method() {    return "Hello!";  }};// 等同于const o = {  method: function() {    return "Hello!";  }}

    在函数内作为返回值,也会变得方便很多

    function getPoint() {  const x = 1;  const y = 10;  return {x, y};}getPoint()// {x:1, y:10}

    注意:简写的对象方法不能用作构造函数,否则会报错

    const obj = {  f() {    this.foo = 'bar';  }};new obj.f() // 报错

    二、属性名表达式

    ES6 允许字面量定义对象时,将表达式放在括号内

    let lastWord = 'last word';const a = {  'first word': 'hello',  [lastWord]: 'world'};a['first word'] // "hello"a[lastWord] // "world"a['last word'] // "world"

    表达式还可以用于定义方法名

    let obj = {  ['h' + 'ello']() {    return 'hi';  }};obj.hello() // hi

    注意,属性名表达式与简洁表示法,不能同时使用,会报错

    // 报错const foo = 'bar';const bar = 'abc';const baz = { [foo] };// 正确const foo = 'bar';const baz = { [foo]: 'abc'};

    注意,属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object]

    const keyA = {a: 1};const keyB = {b: 2};const myObject = {  [keyA]: 'valueA',  [keyB]: 'valueB'};myObject // Object {[object Object]: "valueB"

    三、super关键字

    this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象

    const proto = {  foo: 'hello'};const obj = {  foo: 'world',  find() {    return super.foo;  }};Object.setPrototypeOf(obj, proto); // 为obj设置原型对象obj.find() // "hello"

    四、扩展运算符的应用

    在解构赋值中,未被读取的可遍历的属性,分配到指定的对象上面

    let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };x // 1y // 2z // { a: 3, b: 4 }

    注意:解构赋值必须是最后一个参数,否则会报错

    解构赋值是浅拷贝

    let obj = { a: { b: 1 } };let { ...x } = obj;obj.a.b = 2; // 修改obj里面a属性中键值x.a.b // 2,影响到了结构出来x的值

    对象的扩展运算符等同于使用Object.assign()方法

    五、属性的遍历

    ES6 一共有 5 种方法可以遍历对象的属性。

    • for...in:循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)

    • Object.keys(obj):返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名

    • Object.getOwnPropertyNames(obj):回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名

    • Object.getOwnPropertySymbols(obj):返回一个数组,包含对象自身的所有 Symbol 属性的键名

    • Reflect.ownKeys(obj):返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举

    上述遍历,都遵守同样的属性遍历的次序规则:

    • 首先遍历所有数值键,按照数值升序排列

    • 其次遍历所有字符串键,按照加入时间升序排列

    • 最后遍历所有 Symbol 键,按照加入时间升序排

    Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })// ['2', '10', 'b', 'a', Symbol()]

    六、对象新增的方法

    关于对象新增的方法,分别有以下:

    • Object.is()

    • Object.assign()

    • Object.getOwnPropertyDescriptors()

    • Object.setPrototypeOf(),Object.getPrototypeOf()

    • Object.keys(),Object.values(),Object.entries()

    • Object.fromEntries()

    Object.is()

    严格判断两个值是否相等,与严格比较运算符(===)的行为基本一致,不同之处只有两个:一是+0不等于-0,二是NaN等于自身

    +0 === -0 //trueNaN === NaN // falseObject.is(+0, -0) // falseObject.is(NaN, NaN) // true

    Object.assign()

    Object.assign()方法用于对象的合并,将源对象source的所有可枚举属性,复制到目标对象target

    Object.assign()方法的第一个参数是目标对象,后面的参数都是源对象

    const target = { a: 1, b: 1 };const source1 = { b: 2, c: 2 };const source2 = { c: 3 };Object.assign(target, source1, source2);target // {a:1, b:2, c:3}

    注意:Object.assign()方法是浅拷贝,遇到同名属性会进行替换

    Object.getOwnPropertyDescriptors()

    返回指定对象所有自身属性(非继承属性)的描述对象

    const obj = {  foo: 123,  get bar() { return 'abc' }};Object.getOwnPropertyDescriptors(obj)// { foo://    { value: 123,//      writable: true,//      enumerable: true,//      configurable: true },//   bar://    { get: [Function: get bar],//      set: undefined,//      enumerable: true,//      configurable: true } }

    Object.setPrototypeOf()

    Object.setPrototypeOf方法用来设置一个对象的原型对象

    Object.setPrototypeOf(object, prototype)// 用法const o = Object.setPrototypeOf({}, null);

    Object.getPrototypeOf()

    用于读取一个对象的原型对象

    Object.getPrototypeOf(obj);

    Object.keys()

    返回自身的(不含继承的)所有可遍历(enumerable)属性的键名的数组

    var obj = { foo: 'bar', baz: 42 };Object.keys(obj)// ["foo", "baz"]

    Object.values()

    返回自身的(不含继承的)所有可遍历(enumerable)属性的键对应值的数组

    const obj = { foo: 'bar', baz: 42 };Object.values(obj)// ["bar", 42]

    Object.entries()

    返回一个对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对的数组

    const obj = { foo: 'bar', baz: 42 };Object.entries(obj)// [ ["foo", "bar"], ["baz", 42] ]

    Object.fromEntries()

    用于将一个键值对数组转为对象

    Object.fromEntries([  ['foo', 'bar'],  ['baz', 42]])// { foo: "bar", baz: 42 }

    读到这里,这篇“es6新增对象如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: es6新增对象如何使用

    本文链接: https://lsjlt.com/news/330477.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • es6新增对象如何使用
      本文小编为大家详细介绍“es6新增对象如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6新增对象如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、属性的简写ES6中,当对象键名与对应值名相等的...
      99+
      2023-06-30
    • es6对象增加新的属性怎么使用
      今天小编给大家分享一下es6对象增加新的属性怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。es6对象增加新的属性是“...
      99+
      2023-07-04
    • ES6对象如何使用
      本篇内容介绍了“ES6对象如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、对象和属性和方法JavaScript中对象:var&nb...
      99+
      2023-06-30
    • es6新增对象的实用方法总结
      目录一、属性的简写二、属性名表达式三、super关键字四、扩展运算符的应用五、属性的遍历六、对象新增的方法Object.is()Object.assign()Object.getOw...
      99+
      2024-04-02
    • es6 number对象的新增方法怎么用
      本文小编为大家详细介绍“es6 number对象的新增方法怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“es6 number对象的新增方法怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。es6 num...
      99+
      2023-07-04
    • ES6中如何使用Promise对象
      这篇文章主要介绍了ES6中如何使用Promise对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ES6中如何使用Promise对象文章都会有所收获,下面我们一起来看看吧。在promise之前处理异步回调的方式...
      99+
      2023-06-17
    • es6 number对象的新增方法有哪些
      本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。在 ES5 中,全局下的 isFinite () 和 isNaN () 两种方法存在类型转换,对最终的判断结果存在歧义。ES6 在 Number 对象上,...
      99+
      2022-11-22
      javascript ES6
    • es6对象增加新的属性是什么
      本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。JavaScript 中对象是非常重要的数据结构,ES6 对对象进行了极大的扩展,使用上也更加简洁。其中es6对象增加新的属性是“name”。对象方法的 ...
      99+
      2022-11-22
      ES6 javascript
    • 如何使用es6删除对象属性
      本篇文章为大家展示了如何使用es6删除对象属性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。es6删除对象属性的方法:使用delete操作符,语法“delete 对...
      99+
      2024-04-02
    • ES6新增的数组方法和对象有哪些
      这篇文章主要为大家展示了“ES6新增的数组方法和对象有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6新增的数组方法和对象有哪些”这篇文章吧。es6新增...
      99+
      2024-04-02
    • es6如何合并对象
      小编给大家分享一下es6如何合并对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! es6合并对象的方法有:1、利用“Object.assign()”方法,语法...
      99+
      2024-04-02
    • es6新增循环怎么使用
      本篇内容介绍了“es6新增循环怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!es6新增循环语句有一个:“for of”循环。“for...
      99+
      2023-07-04
    • ES6如何新增math,Number方法
      这篇文章将为大家详细讲解有关ES6如何新增math,Number方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Nunber.isInteger()判断是否为整数,需要...
      99+
      2024-04-02
    • ES6中如何合并对象
      小编给大家分享一下ES6中如何合并对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!合并对象ES6 中新增的拓展运算符,可以用来...
      99+
      2024-04-02
    • ES6新特性中promise对象的用法
      这篇文章主要介绍了ES6新特性中promise对象的用法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. promise 介绍它是一个对象...
      99+
      2024-04-02
    • ES6中怎么使用Promise对象
      这期内容当中小编将会给大家带来有关ES6中怎么使用Promise对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在promise之前处理异步回调的方式function&...
      99+
      2024-04-02
    • 怎么使用es6合并对象
      这篇文章给大家分享的是有关怎么使用es6合并对象的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。合并对象在JavaScript中合并多个对象的需求一直存在, 比如在传参时需要把表单...
      99+
      2024-04-02
    • es6如何获取顶层对象
      本篇内容介绍了“es6如何获取顶层对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
      99+
      2024-04-02
    • es6如何实现对象拷贝
      今天小编给大家分享一下es6如何实现对象拷贝的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实现方法:1、用“Object.a...
      99+
      2023-07-04
    • es6对象数组如何去重
      可以使用Set数据结构或者reduce方法来去重。 使用Set数据结构: let arr = [{name: 'Alice', ...
      99+
      2023-10-26
      es6
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作