JS中对象解构怎样用,能做什么
Admin 2022-07-15 群英技术资讯 414 次浏览
ES6(ES2015)的发布,给JavaScript 提供了一种更方便快捷的方式来处理对象的属性。该机制称为Destructuring(也称为解构赋值)。但是你真的会用吗?你真的了解各种场景下,解构赋值的用法吗?
对象解构最基本的用法是从对象中检索属性键的值。
例如,我们定义了一个对象,他有两个属性:name和age
const User = { name: '搞前端的半夏', age: 18 }
传统上,我们将使用点 (.) 表示法或下标 ([]) 表示法从对象中检索值。下面的代码片段显示了使用点符号检索对象的值id和name从对象中检索值的示例。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 对象解构中,您可以为解构变量alias命名。减少变量名冲突的机会非常方便。
const User = { name: '搞前端的半夏', age: '' }
假设我们想用解构赋值获取age属性的值,但是代码中已经又age这个变量了,我们这个时候就需要在结构的时候定义别名。
const { age: userAge } = User; console.log(userAge); //搞前端的半夏
而如果使用age的话,会报错。
console.log(age);
使用对象解构处理动态名称属性
我们经常将 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); // 空 搞前端的半夏
在函数参数和返回值中解构对象
使用对象解构将属性值作为参数传递给函数。
const User = { name: '搞前端的半夏', age: 18 }
name现在让我们创建一个简单的函数,该函数使用和属性值创建一条消息dept以登录到浏览器控制台。
function consoleLogUser({name, age}) { console.log(`${name} 今年 ${age}`); }
直接将值作为函数参数传递并在内部使用它们。
consoleLogUser(User); // 搞前端的半夏 今年 18
解构函数对象返回值
对象解构函数还有另一种用法。如果函数返回一个对象,您可以将值直接解构为变量。让我们创建一个返回对象的函数。
function getUser() { return { 'name': '搞前端的半夏', 'age': 18 } }
const { age } = getUser(); console.log(age); // 18
我们将讨论的最后一个(但并非最不重要的)用法是循环解构。让我们考虑一组员工对象。我们想要遍历数组并想要使用每个员工对象的属性值。
const User= [ { 'name': '爱分享的半夏', 'age': 16 }, { 'name': '搞前端的半夏', 'age': 18 }, { 'name': '敲代码的半夏', 'age': 20 } ];
您可以使用for-of循环遍历User对象,然后使用对象解构赋值语法来检索详细信息。
for(let {name, age} of employees) { console.log(`${name} 今年${age}岁!!!`); }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章我们来了解怎样判断复选框是否选中,复选框的使用还是比较常见的,下文主要使用jQuery判断复选框选中与否,利用了prop('checked')和is(':checked'),这两个方法,实现代码如下,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
这篇文章主要为大家详细介绍了js实现自定义下拉框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在jquery中可以给一个元素设置点击事件吗在jquery中可以给一个元素设置点击事件设置方法如下:1、获取指定的元素对象语法为:$("selector")2、给获取到的元素对象添加点击事件
这篇文章主要为大家详细介绍了Vue实现随机验证码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
通过原型链继承原型上的属性和方法,盗用构造函数继承实例属性。这样不仅可以将方法定义为原型,还可以使每个实例都有自己的属性。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008