大神总结如何在JavaScript中使用对象解构
在这篇文章中,我将解释如何在JavaScript中使用对象分解。
5.别名如果要创建名称与属性不同的变量,则可以使用对象分解的别名功能。
const identifier1 = expression.identifier1; const identifier2 = expression.identifier2; // ... const identifierN = expression.identifierN;让我们再次看一下第一部分中的示例,其中提取了2个属性:
这是使用属性访问器的等效代码:
通常,对象可以嵌套在其他对象中。换句话说,某些属性可以包含对象。
我特别喜欢对象分解的简洁语法和在一条语句中提取多个变量的能力。
这是等效的代码:
在这种情况下,您仍然可以从深处使用对象分解和访问属性。基本语法如下:
这就是对象解构语法有用的地方:您可以读取属性并将其值分配给变量,而无需重复属性名称。不仅如此,您还可以在一个语句中读取同一对象的多个属性!
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { name } = hero; name; // => 'Batman'该语句const { name } = hero定义变量name,并使用hero.nameproperty的值对其进行初始化。
// existing variable let name; const hero = { name: 'Batman', }; ({ name } = hero); name; // => 'Batman'我发现将for..of循环与对象解构相结合以立即提取属性是令人满意的:
1.需要对象分解假设您要提取对象的某些属性。在ES2015之前的环境中,您需要编写以下代码:
7.提取动态名称属性您可以将具有动态名称的属性提取到变量中(属性名称在运行时是已知的):
更好的是,对象解构可以在一个语句中提取多个属性,可以从嵌套对象访问属性,并且可以设置默认值(如果该属性不存在)。
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { realName: secretName } = hero; secretName; // => 'Bruce Wayne'看一下const { realName: secretName } = hero,解构定义了一个新变量secretName(别名变量),并为其分配了值hero.realName。
const { identifier: aliasIdentifier } = expression;identifier是要访问的属性的名称,aliasIdentifier是变量的名称,expression应评估为对象。销毁后,变量aliasIdentifier包含属性值。
const { [propName]: identifier } = expression;propNameexpression应该计算为属性名称(通常是字符串),并且identifier应该指示在解构之后创建的变量名称。第二个expression应该评估要分解的对象。
5.别名const { identifier, ...rest } = expression;
哪里identifier是要访问的属性名称,expression应评估为一个对象。
这是等效的代码:
const identifier = expression[propName];让我们看一个prop包含属性名称的示例:
// var const hero = { name: 'Batman', }; var { name } = hero; name; // => 'Batman'以及如何解构为已声明的变量:
const { propA: { propB: { propC: { .... } } } } = object;例如,对象hero包含一个嵌套对象{ city: 'Gotham'}。
const { identifier1, identifier2, ..., identifierN } = expression;其中identifier1,…identifierN是要访问的属性的名称,expression应评估为对象。销毁后,变量identifier1…identifierN包含相应的属性值。
2.提取属性对象解构的基本语法非常简单:
例如,您可以在函数的参数列表内破坏对象:
3.提取多个属性7.提取动态名称属性
对象解构是一种有用的JavaScript功能,可以从对象中提取属性并将其绑定到变量。
销毁后,变量identifier包含嵌套对象的属性值。
const { nestedObjectProp: { identifier } } = expression;nestedObjectProp是保存嵌套对象的属性的名称。identifier是要从嵌套对象访问的属性名称。expression应该评估变形后的对象。
9.常见用例9.1将属性绑定到变量如之前的许多示例所示,对象解构将属性值绑定到变量。
让我们重构上面的脚本,并应用对象分解来访问属性name和realName:
同时,剩余的属性(realName在这种情况下)被收集到变量realHero:中{ realName: 'Bruce Wayne' }。
6.从嵌套对象中提取属性4.默认值
如果已解构的对象不具有在解构分配中指定的属性,则将变量分配给undefined。让我们看看它是如何发生的:
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const prop = 'name'; const { [prop]: name } = hero; name; // => 'Batman'const { [prop]: name } = hero是一个对象分解,将变量赋给namevalue hero[prop],其中prop是一个保存属性名称的变量。
const identifier = expression.identifier;让我们在实践中尝试对象分解:
const hero = { name: 'Batman', realName: 'Bruce Wayne', address: { city: 'Gotham' } }; // Object destructuring: const { address: { city } } = hero; city; // => 'Gotham'通过对象解构,const { address: { city } } = hero您可以city从嵌套对象访问属性。
例如,以下是使用let语句解构的方法:
8.销毁后的物体10.总结const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { name, ...realHero } = hero; realHero; // => { realName: 'Bruce Wayne' }
破坏const { name, ...realHero } = hero提取财产name。
const heroes = [ { name: 'Batman' }, { name: 'Joker' } ]; const names = heroes.map( function({ name }) { return name; } ); names; // => ['Batman', 'Joker']function({ name })解构函数参数,创建一个name保存name属性值的变量。
比较两种访问对象属性的方法:
const heroes = [ { name: 'Batman' }, { name: 'Joker' } ]; for (const { name } of heroes) { console.log(name); // logs 'Batman', 'Joker' }9.2功能参数解构通常,对象分解可以放置在发生分配的任何位置。
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { name, realName } = hero; name; // => 'Batman', realName; // => 'Bruce Wayne'const { name, realName } = hero是对象销毁分配。这个语句定义变量name和realName,然后分配给他们的属性值hero.name和hero.realNamecorrespondigly。
9.常见用例销毁后,变量identifier包含属性值。rest变量是具有其余属性的普通对象。
希望我的帖子对您了解对象分解的有用!
以上就是大神总结如何在JavaScript中使用对象解构的详细内容,更多请关注聚合云库其它相关文章!
const identifier = expression.nestedObjectProp.identifier;您可以从中提取属性的嵌套级别不受限制。如果要从深处提取属性,只需添加更多嵌套的花括号:
const { identifier } = expression;哪里identifier是要访问的属性名称,expression应评估为一个对象。销毁后,变量identifier包含属性值。
var hero = { name: 'Batman', realName: 'Bruce Wayne' }; var name = hero.name;var realName = hero.realName; name; // => 'Batman', realName; // => 'Bruce Wayne'属性hero.name值已分配给变量name。将相同的hero.realName值分配给realName。
例如,让我们提取属性name,但保留其余属性:
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { enemies = ['Joker'] } = hero; enemies; // => ['Joker']现在,undefined该变量enemies默认为,而不是['Joker']。
目录1.需要对象分解
const identifier = expression.identifier === undefined ?
defaultValue : expression.identifier;
让我们更改先前的代码示例,并使用默认值功能:
const { identifier = defaultValue } = expression;哪里identifier是要访问的属性名称,expression应评估为一个对象。销毁后,变量identifier包含属性值,或者defaultValue如果identifier属性不存在则分配给变量。
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { name, realName } = hero; name; // => 'Batman', realName; // => 'Bruce Wayne'const { name, realName } = hero创建2个变量name并realName分配相应属性hero.name和的值hero.realName。
const hero = { name: 'Batman', realName: 'Bruce Wayne' }; const { enemies } = hero; enemies; // => undefined解构后的变量enemies是undefined因为该属性enemies在对象中不存在hero。
2.提取属性8.销毁后的物体
rest语法对于在解构之后收集其余属性很有用:
这种访问属性并将其分配给变量的方法需要样板代码。通过编写var name = hero.name,您必须提及name两次绑定,对于相同realName。
6.从嵌套对象中提取属性在前面的示例中,对象很简单:属性具有原始数据类型(例如字符串)。
没有对象分解的等效代码:
const aliasIdentifier = expression.identifier;这是一个对象分解别名功能的示例:
4.默认值const name = hero.name; const realName = hero.realName; // is equivalent to: const { name, realName } = hero;
可以看到,由于属性名称和对象变量都没有重复,因此对象的分解更加方便。
3.提取多个属性要将对象分解为多个属性,请枚举任意数量的属性,并,在之间添加逗号:
幸运的是,如果该属性在解构对象中不存在,则可以设置默认值。基本语法如下:
上面的语法等效于:
10.总结对象解构是一项强大的功能,可让您从对象中提取属性并将这些值绑定到变量。
对象解构可以给变量赋值使用声明const,let和var。甚至分配给一个已经存在的变量。
等效代码:
// let const hero = { name: 'Batman', }; let { name } = hero; name; // => 'Batman'如何使用var语句来破坏结构:
相关热词: javascript
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/javascript/5377.shtml
相关文章
热门TAG
服务器 命令 技巧 详解 调用 标签 功能 织梦 javascript dedecms修改内容 织梦教程 php 白帽 企业网站 外链 权重 MYSQL 网站流量 实例解析 JSP 网站收录 搜索引擎 蜘蛛 windows jquery jquery教程 python tags标签 HTML 织梦cms最新文章
-
Javascript是什么?
时间:2021-01-04
-
Canvas入门实战之实现一个
时间:2021-01-04
-
11月份GitHub上最热门的Ja
时间:2021-01-04
-
一篇带给你JavaScript的Cla
时间:2021-01-04
-
详解js异步文件加载器
时间:2021-01-04
-
深入理解JavaScript中的箭头
时间:2021-01-04
-
复盘Node项目中遇到的13+常
时间:2021-01-04
-
连续3年稳居第一,全球
时间:2021-01-04
热门文章
-
连续3年稳居第一,全球1240万用户,Java
时间:2021-01-04
-
一篇带给你JavaScript的Class语法介绍
时间:2021-01-04
-
深入理解JavaScript中的箭头函数
时间:2021-01-04
-
Javascript在Chrome浏览器中调试的七个步骤
时间:2021-01-04
-
Canvas入门实战之实现一个图形验证码
时间:2021-01-04
-
详解js异步文件加载器
时间:2021-01-04
-
复盘Node项目中遇到的13+常见问题和解决方
时间:2021-01-04
-
11月份GitHub上最热门的JavaScript开源项目
时间:2021-01-04
-
Javascript是什么?
时间:2021-01-04
