当前位置: 首页 > news >正文

04 ES6中对象的简写

在 ES6 中,对象字面量的书写方式进行了一些简化,使得对象的创建更加简洁。以下是 ES6 中对象简写的几种形式:

  1. 属性值缩写
    当对象的属性名和属性值的变量名相同时,可以省略属性值,只写属性名。

    // ES5
    const name = 'Alice';
    const age = 25;
    const person = {name: name,age: age
    };// ES6
    const { name, age } = { name: 'Alice', age: 25 };
    

    在上述 ES6 的例子中,nameage 直接作为属性名,它们的值由解构赋值提供。

  2. 方法定义简化
    对象中的方法定义不再需要使用 function 关键字,直接写方法名和函数体即可。

    // ES5
    const person = {sayHello: function() {console.log('Hello!');}
    };// ES6
    const person = {sayHello() {console.log('Hello!');}
    };
    
  3. 计算属性名
    如果属性名是动态生成的,可以使用方括号 [] 来表示。

    const key = 'age';
    const person = {[key]: 25
    };
    // person 对象中将有一个属性名为 'age' 的属性,其值为 25
    
  4. 对象扩展运算符
    使用三个点 ... 可以合并多个对象,或将对象中的属性复制到新对象中。

    const person = { name: 'Alice' };
    const details = { age: 25 };
    const personWithDetails = { ...person, ...details };
    // personWithDetails: { name: 'Alice', age: 25 }
    
  5. null 值合并操作符
    如果对象的某个属性可能是 nullundefined,可以使用 ??= 操作符提供一个默认值。

    const config = {title: null,author: 'Unknown'
    };const defaultConfig = {title: 'Default Title',author: 'Default Author'
    };// 使用 null 值合并操作符为 config 提供默认值
    const finalConfig = {...config,title: config.title ?? defaultConfig.title,author: config.author ?? defaultConfig.author
    };
    // 如果 config.title 是 null,finalConfig.title 将是 'Default Title'
    
  6. 属性访问的简写
    如果访问的对象属性名和变量名相同,可以省略属性名。

    const name = 'Alice';
    const person = {name
    };console.log(person.name); // 输出 'Alice'
    

这些简写特性使得在 ES6 中创建和操作对象更加方便和直观。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入理解PHP中的异常处理与错误日志记录
  • 关于大数据技术栈的一些总结
  • go使用gjson操作json数据
  • C++与lua联合编程
  • Inconsistent Query Results Based on Output Fields Selection in Milvus Dashboard
  • leetcode 106. 从中序与后序遍历序列构造二叉树
  • 深入分析 Android ContentProvider (三)
  • windows11 ,ubuntu20.04双系统,ubuntu没有wifi的解决方式
  • LeetCode-day20-2850. 将石头分散到网格图的最少移动次数
  • MongoDB - 数组更新操作符:$、$[]、$pop、$pull、$push、$each、$sort、$slice、$position
  • C# 时间、空间复杂度
  • STM32自己从零开始实操10:PCB全过程
  • rce漏洞-ctfshow(50-70)
  • 如何开启或者关闭 Windows 安全登录?
  • Python爬虫(基本流程)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 4. 路由到控制器 - Laravel从零开始教程
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • PHP那些事儿
  • spring cloud gateway 源码解析(4)跨域问题处理
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 基于HAProxy的高性能缓存服务器nuster
  • 深度解析利用ES6进行Promise封装总结
  • 微信小程序:实现悬浮返回和分享按钮
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 问题之ssh中Host key verification failed的解决
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 数据库巡检项
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​批处理文件中的errorlevel用法
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $.ajax()
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (Charles)如何抓取手机http的报文
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (第30天)二叉树阶段总结
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (三)终结任务
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)http协议
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net 8.0 新的变化
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .Net MVC4 上传大文件,并保存表单
  • .Net 垃圾回收机制原理(二)
  • .NET 直连SAP HANA数据库
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • [ IO.File ] FileSystemWatcher
  • [ 数据结构 - C++]红黑树RBTree