JS对象的 rest/spread 属性指南

本文介绍了JS中的对象rest/spread属性,包括如何使用它们进行对象克隆、合并和属性覆盖。通过实例展示了对象展开如何处理可枚举属性、自有属性和继承属性,以及在处理嵌套对象和不可变更新时的应用。此外,还提到了对象剩余操作运算在解构赋值中的作用。
摘要由CSDN通过智能技术生成

为了保证的可读性,本文采用意译而非直译。

在ES5中,咱们合并对象通常使用Lodash的 _.extend(target,[sources]) 方法,在ES6中咱们使用 Object.assign(target,[sources])来合并对象,当然现在最常用应该是使用 Rest/Spread(展开运算符与剩余操作符)。

来个例子:在这里插入图片描述
在上面的示例中, …cat将 cat的属性复制到新的对象 dog中, .sound属性接收最终值 ‘woof’。

本文将介绍对象 spread 和 rest语法,包括对象传播如何实现对象克隆、合并、属性覆盖等方法。

下面简要介绍一下可枚举属性,以及如何区分自有属性和继承属性。这些是理解对象 spread 和 rest工作原理的必要基础。

1.属性描述对象

JS 提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。这个内部数据结构称为“属性描述对象”。每个属性都有自己对应的属性描述对象,保存该属性的一些元信息。

下面是属性描述对象的一个例子。

在这里插入图片描述
属性描述对象提供6个元属性。

(1)value

value是该属性的属性值,默认为undefined。

(2)writable

writable是一个布尔值,表示属性值(value)是否可改变(即是否可写),默认为true。

(3)enumerable

enumerable是一个布尔值,表示该属性是否可遍历,默认为 true。如果设为 false,会使得某些操作(比如 for…in循环、 Object.keys())跳过该属性。

(4)configurable

configurable是一个布尔值,表示可配置性,默认为 true。如果设为 false,将阻止某些操作改写该属性,比如无法删除该属性,也不得改变该属性的属性描述对象( value属性除外)。也就是说, configurable属性控制了属性描述对象的可写性。

(5)get

get是一个函数,表示该属性的取值函数( getter),默认为 undefined。

(6)set

set是一个函数,表示该属性的存值函数( setter),默认为 undefined。

2.可枚举和自有属性

JS中的对象是键和值之间的关联。 键类型通常是字符串或 symbol。 值可以是基本类型(string、boolean、number、undefined或null)、对象或函数。

下面使用对象字面量来创建对象:在这里插入图片描述
2.1 可枚举的属性

enumerable 属性是一个布尔值,它表示在枚举对象的属性时该属性是否可访问。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值