JavaScript 对象解构用法解析

🍗 加我:frontendpicker, 更多精彩等你来!

🍗 回复[算法],获取各种算法资料!

ES6(ES2015)的发布,给JavaScript 提供了一种更方便快捷的方式来处理对象的属性。该机制称为Destructuring(也称为解构赋值)。但是你真的会用吗?你真的了解各种场景下,解构赋值的用法吗?

使用解构从对象中获取值


对象解构最基本的用法是从对象中检索属性键的值。

例如,我们定义了一个对象,他有两个属性:name和age


const User = {

  name: '搞前端的半夏',

  age: 18

}



传统上,我们将使用点 (.) 表示法或下标 ([]) 表示法从对象中检索值。下面的代码片段显示了使用点符号检索对象的值idname从对象中检索值的示例。employee

在之前我们想要获取对象中某个属性的值,通产是使用.或者[]


const name = User['name'];

const age = User.age;



当然这两种方式在当前情况下是没有问题的,但是当User的属性多了,我们就要不停的复制粘贴,产生很多重复的代码。

有了结构赋值,我们就可以快速的来获取值。例如我们使用对象的键名来创建变量,并将对象的值分配给相同的键。这样无论有多少属性,我们只要赋值属性名即可,同样的也减少了很多重复代码。


const { name, age } = User;



使用解构从嵌套对象中获取值


在上面的例子中,User只是一个简单的单层对象,我们在日常的开发中也会遇到嵌套的对象,,那么使用结构赋值,我们该如何检索嵌套对象中的值。下面我们重新定义User对象,给这个对象新增一个contact属性,它包含着User的phone。。


const User = {

  name: '搞前端的半夏',

  age: '18',

  contact:{

    phone:'110',

  }

}



如果我们用.的当时来回去phone的值,则需要两次.


const phone = User.contact.phone;



如果使用解构赋值的话:则写法如下:


const  {contact:{phone}}=User

consosle.log(phone)  // 输出10.



无论是多少层的嵌套,只要按照这个写法,一定会拿到具体的值。

使用对象解构定义一个新变量以及默认值


默认值

当然我们在日常开发的过程中,可能会遇到很多极端的情况,

例如后端传过来的对象,可能会缺失某些字段


const User = {

  name: '搞前端的半夏',

}



或者属性没有具体的值:


const User = {

  name: '搞前端的半夏',

  age: ''

}



当我们使用解构赋值的话:无论是否存在age属性的话,都会创建age变量。


const { name, age } = employee;



当User.age没有具体值得话,我们则可以使用


const { name, age=18 } = employee;



给age一个默认值。

新变量

坚持,稍等。解构部分有更多的魔力展示!如何创建一个全新的变量并分配一个使用对象属性值计算的值?听起来很复杂?这是一个例子,

当我们想输出User属性的组合值的话,应该怎么做呢?


const { name,age,detail = `${name} 今年 ${age} `} = User ;

console.log(detail); // 输出:搞前端的半夏 今年 18 



使用 JavaScript 对象解构别名


在 JavaScript 对象解构中,您可以为解构变量alias命名。减少变量名冲突的机会非常方便。


const User = {

  name: '搞前端的半夏',

  age: ''

}



假设我们想用解构赋值获取age属性的值,但是代码中已经又age这个变量了,我们这个时候就需要在结构的时候定义别名。


const { age: userAge } = User;

console.log(userAge); //搞前端的半夏



而如果使用age的话,会报错。


console.log(age);



image-20220120093046513。*

使用对象解构处理动态名称属性


我们经常将 API 响应数据作为 JavaScript 对象处理。这些对象可能包含动态数据,因此作为客户端,我们甚至可能事先不知道属性键名称。


const User = {

  name: '搞前端的半夏',

  age: ''

}



当我们将键作为参数传递时,我们可以编写一个返回User对象属性值的函数。这里我们使用了[],来接受参数,js会根据这个键对从对象中检索!


function getPropertyValue(key) {

    const { [key]: returnValue } = User;   

    return returnValue;

}




const contact = getPropertyValue('contact');

const name = getPropertyValue('name');



console.log(contact, name); // 空  搞前端的半夏
#  最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/bbcd593094956d49a2bd895a5844dcfb.jpeg)

![](https://img-blog.csdnimg.cn/img_convert/cc9c6c8250f6d58e113196639697a611.png)

![](https://img-blog.csdnimg.cn/img_convert/7f0de58b85deada49315b7a5a2594388.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
341205)]

[外链图片转存中...(img-N5jpNu0F-1715465341206)]

[外链图片转存中...(img-6vifh8f2-1715465341206)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值