2024年最全阿里大神最佳总结:如何在JavaScript中使用对象解构,web前端前端开发培训

对象篇

模块化编程-自研模块加载器

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

要将对象分解为多个属性,请枚举任意数量的属性,并,在之间添加逗号:

const { identifier1, identifier2, …, identifierN } = expression;

其中identifier1,…identifierN是要访问的属性的名称,expression应评估为对象。销毁后,变量identifier1identifierN包含相应的属性值。

这是等效的代码:

const identifier1 = expression.identifier1;

const identifier2 = expression.identifier2;

// …

const identifierN = expression.identifierN;

让我们再次看一下第一部分中的示例,其中提取了2个属性:

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’

};

const { name, realName } = hero;

name; // => ‘Batman’,

realName; // => ‘Bruce Wayne’

const { name, realName } = hero创建2个变量namerealName分配相应属性hero.name和的值hero.realName

4.默认值


如果已解构的对象不具有在解构分配中指定的属性,则将变量分配给undefined。让我们看看它是如何发生的:

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’

};

const { enemies } = hero;

enemies; // => undefined

解构后的变量enemiesundefined因为该属性enemies在对象中不存在hero

幸运的是,如果该属性在解构对象中不存在,则可以设置默认值。基本语法如下:

const { identifier = defaultValue } = expression;

哪里identifier是要访问的属性名称,expression应评估为一个对象。销毁后,变量identifier包含属性值,或者defaultValue如果identifier属性不存在则分配给变量。

这是等效的代码:

const identifier = expression.identifier === undefined ?

defaultValue : expression.identifier;

让我们更改先前的代码示例,并使用默认值功能:

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’

};

const { enemies = [‘Joker’] } = hero;

enemies; // => [‘Joker’]

现在,undefined该变量enemies默认为,而不是['Joker']

5.别名


如果要创建名称与属性不同的变量,则可以使用对象分解的别名功能。

const { identifier: aliasIdentifier } = expression;

identifier是要访问的属性的名称,aliasIdentifier是变量的名称,expression应评估为对象。销毁后,变量aliasIdentifier包含属性值。

等效代码:

const aliasIdentifier = expression.identifier;

这是一个对象分解别名功能的示例:

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’

};

const { realName: secretName } = hero;

secretName; // => ‘Bruce Wayne’

看一下const { realName: secretName } = hero,解构定义了一个新变量secretName(别名变量),并为其分配了值hero.realName

6.从嵌套对象中提取属性


在前面的示例中,对象很简单:属性具有原始数据类型(例如字符串)。

通常,对象可以嵌套在其他对象中。换句话说,某些属性可以包含对象。

在这种情况下,您仍然可以从深处使用对象分解和访问属性。基本语法如下:

const { nestedObjectProp: { identifier } } = expression;

nestedObjectProp是保存嵌套对象的属性的名称。identifier是要从嵌套对象访问的属性名称。expression应该评估变形后的对象。

销毁后,变量identifier包含嵌套对象的属性值。

上面的语法等效于:

const identifier = expression.nestedObjectProp.identifier;

您可以从中提取属性的嵌套级别不受限制。如果要从深处提取属性,只需添加更多嵌套的花括号:

const { propA: { propB: { propC: { … } } } } = object;

例如,对象hero包含一个嵌套对象{ city: 'Gotham'}

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’,

address: {

city: ‘Gotham’

}

};

// Object destructuring:

const { address: { city } } = hero;

city; // => ‘Gotham’

通过对象解构,const { address: { city } } = hero您可以city从嵌套对象访问属性。

7.提取动态名称属性


您可以将具有动态名称的属性提取到变量中(属性名称在运行时是已知的):

const { [propName]: identifier } = expression;

propNameexpression应该计算为属性名称(通常是字符串),并且identifier应该指示在解构之后创建的变量名称。第二个expression应该评估要分解的对象。

没有对象分解的等效代码:

const identifier = expression[propName];

让我们看一个prop包含属性名称的示例:

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’

};

const prop = ‘name’;

const { [prop]: name } = hero;

name; // => ‘Batman’

const { [prop]: name } = hero是一个对象分解,将变量赋给namevalue hero[prop],其中prop是一个保存属性名称的变量。

8.销毁后的物体


rest语法对于在解构之后收集其余属性很有用:

const { identifier, …rest } = expression;

哪里identifier是要访问的属性名称,expression应评估为一个对象。

销毁后,变量identifier包含属性值。rest变量是具有其余属性的普通对象。

例如,让我们提取属性name,但保留其余属性:

const hero = {

name: ‘Batman’,

realName: ‘Bruce Wayne’

};

const { name, …realHero } = hero;

realHero; // => { realName: ‘Bruce Wayne’ }

破坏const { name, ...realHero } = hero提取财产name

同时,剩余的属性(realName在这种情况下)被收集到变量realHero:中{ realName: 'Bruce Wayne' }

9.常见用例


9.1将属性绑定到变量

如之前的许多示例所示,对象解构将属性值绑定到变量。

对象解构可以给变量赋值使用声明constletvar。甚至分配给一个已经存在的变量。

例如,以下是使用let语句解构的方法:

// let

const hero = {

name: ‘Batman’,

};

let { name } = hero;

name; // => ‘Batman’

如何使用var语句来破坏结构:

// var

const hero = {

name: ‘Batman’,

};

var { name } = hero;

name; // => ‘Batman’

最后

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

9.1将属性绑定到变量

如之前的许多示例所示,对象解构将属性值绑定到变量。

对象解构可以给变量赋值使用声明constletvar。甚至分配给一个已经存在的变量。

例如,以下是使用let语句解构的方法:

// let

const hero = {

name: ‘Batman’,

};

let { name } = hero;

name; // => ‘Batman’

如何使用var语句来破坏结构:

// var

const hero = {

name: ‘Batman’,

};

var { name } = hero;

name; // => ‘Batman’

最后

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-O5tbilg1-1715059262180)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值