首页 > 其他分享 >ES6中对象新增了哪些扩展?

ES6中对象新增了哪些扩展?

时间:2022-11-08 16:06:36浏览次数:43  
标签:ES6 const 哪些 对象 Object 扩展 bar obj foo

ES6中对象新增了哪些扩展?_赋值


1、属性的简写

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

const o = {
method() {
return "Hello!";
}
};


// 等同于


const o = {
method: function() {
return "Hello!";
}
}

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

const obj = {
f() {
this.foo = 'bar';
}
};


new obj.f() // 报错

2、属性名表达式

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

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


obj.hello() // hi

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

const keyA = {a: 1};
const keyB = {b: 2};


const myObject = {
[keyA]: 'valueA',
[keyB]: 'valueB'
};


myObject // Object {[object Object]: "valueB"}

3、super关键字

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

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

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

解构赋值是浅拷贝。

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

4、对象新增的方法

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

Object.is()
Object.assign()
Object.getOwnPropertyDescriptors()
Object.setPrototypeOf(),Object.getPrototypeOf()
Object.keys(),Object.values(),Object.entries()
Object.fromEntries()


1)、Object.is()​

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

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() 方法是浅拷贝,遇到同名属性会进行替换。

2)、Object.getOwnPropertyDescriptors()​

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

Object.setPrototypeOf(object, prototype)


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

3)、Object.getPrototypeOf()​

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

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

4)、Object.values()​

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

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

5)、Object.fromEntries()​

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

<span https:="" mmbiz.qpic.cn="" mmbiz_png="" gh31uf9viibsicupllhibkmhwgisayicslpfw98bn0wtoribadfzphyw02ohvdc5g0ocdbshb7iixuxpkpnyvletfq="" 640?wx_fmt="png")" 10px="" 40px="" no-repeat="" rgb(30,="" 30,="" 30);height:="" 30px;width:="" 100%;margin-bottom:="" -7px;border-radius:="" 5px;"="">Object.fromEntries([
['foo', 'bar'],
['baz', 42]
])
// { foo: "bar", baz: 42 }

参考文献:https://es6.ruanyifeng.com/#docs/object




学习更多技能

请点击下方公众号



ES6中对象新增了哪些扩展?_原型对象_02

ES6中对象新增了哪些扩展?_赋值_03

标签:ES6,const,哪些,对象,Object,扩展,bar,obj,foo
From: https://blog.51cto.com/u_15809510/5833396

相关文章

  • 元宇宙互动展厅有哪些特点?
    近年来,“元宇宙”这个概念大火,元宇宙作为虚拟世界和现实世界融合的载体,蕴含社交、内容、游戏、办公等场景变革的巨大机遇。如今元宇宙已经衍生出很多应用场景,元宇宙互动展......
  • 基础版的库存管理系统应具备哪些功能?
    传统企业在货物爆炸时无法实时了解仓库的库存数据,因此如何提高仓库的利用率成为了摆在仓库管理面前的痛点。然而,随着互联网的发展,越来越多的仓库管理系统开始出现,这些系统......
  • 【ES6 教程】第一章 新的ES6语法10—如何替换字符串中的变量
    英文|https://www.javascripttutorial.net翻译|杨小爱在今天的教程中,我们将学习JavaScript模板文字,它使我们可以更轻松地使用字符串模板。在ES6之前,我们使用单引号......
  • 9个常用ES6特性归纳
    1、展开操作符顾名思义,用于对象或数组之前的展开操作符(…),将一个结构展开为列表。演示一下:letfirstHalf=[one,two];letsecondHalf=[three,four,...firstHalf......
  • 24个解决实际问题的ES6代码段
    英文| https://madza.hashnode.dev/24-modern-es6-code-snippets-to-solve-practical-js-problems作者|Madza译者|王强策划|李俊辰这篇文章基于实际使用场景总结......
  • TS流分析-PES中扩展头部的判断
    根据流类型判断(流类型是PES包头第四字节),扩展头部有三种。0xBC 0XBE  0xBF 0xF0 0xF1 0xF2 0xF8),这类可能又PTS/DTS信息一种是(0xBC  0xBF 0xF......
  • [艾思网站设计]响应式网站的优点是什么,体现在哪些维度上
    近年来网站设计越发流行,而响应式网站设计则成为了主流趋势。响应式网站与传统网站建设存在着很大不同,网站的布局可以适应不同的浏览器的宽度,从而使得设计成的网站既可以满......
  • JavaScript数组去重—ES6的两种方式
    说明JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种......
  • 扩展根分区操作教程
    1、首先查看系统硬盘情况。fdisk-l2、分区硬盘,修改磁盘为8e。注明:更改磁盘类型为8e,无需进行格式化。3、创建物理卷pvcreate/dev/sdb14、将物理卷添加到系统默认的卷......
  • xp sp3关闭PAE(物理内存扩展)
      这几天调试系统PTE区域,在获取nt!MmFirstFreeSystemPte指向的元素时,总无法获得正确的空闲pte值。反汇编nt!MiInitializeSystemPtes函数时发现这样的代码:80544e358d3c......