0

0

升级你的 JS:对象文字增强将改变你的代码

DDD

DDD

发布时间:2024-10-08 21:33:11

|

348人浏览过

|

来源于dev.to

转载

升级你的 js:对象文字增强将改变你的代码

对象字面量是 javascript 的基本组成部分,使我们能够快速创建和初始化对象。在 es6 及更高版本中,javascript 引入了对对象字面量的多项增强,使它们更加强大和简洁。让我们深入研究这些改进,看看它们如何使我们的代码更干净、更高效。

1. 属性简写名称

创建对象时,如果属性名称与分配给它的变量名称相同,则可以使用简写语法。

const name = 'john';
const age = 30;

// old way
const person = {
    name: name,
    age: age
};

// new way
const person = { name, age };

console.log(person); // { name: 'john', age: 30 }

这种简写语法减少了重复,使我们的代码更加简洁。
mdn 文档:对象初始值设定项

2. 简写方法名称

同样,在对象中定义方法时,我们可以省略 function 关键字和冒号。

// old way
const calculator = {
    add: function(a, b) {
        return a + b;
    }
};

// new way
const calculator = {
    add(a, b) {
        return a + b;
    }
};

console.log(calculator.add(5, 3)); // 8

这种语法更清晰、更容易阅读,尤其是当一个对象中有多个方法时。
mdn 文档:方法定义

3. 计算属性名称

es6 允许我们使用表达式来计算属性名称。当您想要创建动态属性名称时,这特别有用。

const prefix = 'user_';
const id = 1234;

const user = {
    [`${prefix}${id}`]: 'john doe'
};

console.log(user.user_1234); // 'john doe'

当您需要根据某些逻辑或外部数据创建具有动态键的对象时,此功能非常强大。
mdn 文档:计算属性名称

4. 方法属性

es6 引入了一种使用 get 和 set 关键字在对象字面量中定义方法的新方法。这允许您创建计算属性而无需显式调用函数。

const person = {
    firstname: 'john',
    lastname: 'doe',
    get fullname() {
        return `${this.firstname} ${this.lastname}`;
    },
    set fullname(name) {
        [this.firstname, this.lastname] = name.split(' ');
    }
};

console.log(person.fullname); // 'john doe'
person.fullname = 'jane smith';
console.log(person.firstname); // 'jane'
console.log(person.lastname); // 'smith'

获取器和设置器提供了一种干净的方法来定义计算属性,并可用于在获取或设置值时添加验证或副作用。
mdn 文档:getter 和 setter

5. 对象扩展运算符

虽然严格来说不是对象字面量增强的一部分,但扩展运算符 (...) 是一个强大的功能,可以很好地与对象字面量配合使用。它允许您轻松克隆对象或合并多个对象。

const defaults = {
    theme: 'light',
    fontSize: 14
};

const userPreferences = {
    fontSize: 16
};

const settings = {
    ...defaults,
    ...userPreferences
};

console.log(settings); // { theme: 'light', fontSize: 16 }

扩展运算符可以轻松地基于现有对象创建新对象,这对于维护应用程序中的不变性特别有用。
mdn 文档:扩展语法 (...)

结论

javascript 中的这些对象文字增强功能为开发人员提供了更具表现力和简洁的方法来处理对象。通过利用这些功能,您可以编写更清晰、更易读且更易于维护的代码。

知元AI
知元AI

AI智能语音聊天 对讲问答 AI绘画 AI写作 AI创作助手工具

下载

请记住,虽然这些功能很强大,但明智地使用它们也很重要。始终优先考虑代码的可读性和可维护性而不是简洁性。


浏览器兼容性

以下是浏览器对这些功能的支持的快速概述:

feature chrome firefox safari edge
shorthand properties 43+ 33+ 9+ 12+
shorthand methods 43+ 34+ 9+ 12+
computed property names 43+ 34+ 8+ 12+
getter/setter methods 1+ 1.5+ 3+ 12+
object spread 60+ 55+ 11.1+ 79+

实际用例

  1. 速记属性:非常适合从现有变量创建对象,尤其是在 react 组件 props 中。
  2. 简写方法:在类结构或定义多个相关函数时很有用。
  3. 计算属性名称:非常适合在国际化 (i18n) 对象中创建动态键。
  4. getter/setter 方法:非常适合创建具有内置验证或副作用的“智能”属性。
  5. 对象扩展:非常适合 redux 中的状态管理或通过轻微修改创建新对象。

性能考虑因素

虽然这些增强功能通常不会对性能产生重大影响,但对象扩展运算符在合并许多属性时可能比 object.assign() 效率低。对于大多数用例,可读性的好处超过了任何微小的性能差异。

相关功能

为了进一步增强您对现代 javascript 对象操作的理解,请考虑探索:

  • 解构作业
  • object.assign() 方法
  • object.entries()、object.values() 和 object.keys() 方法
  • 用于对象不变性的 object.freeze() 和 object.seal() 方法

通过掌握这些对象文字增强功能和相关功能,您将能够编写更优雅、更高效的 javascript 代码。

如果您觉得本文有帮助,请单击“关注”按钮以获取有关 javascript、reactjs 和 next.js 的更多更新和有用资源。您还可以在 twitter 上关注我 @ogdev-01 以获得有用的资源和技术趋势,或者在 opensauced 上关注我所做的贡献以及我强调的贡献!

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

557

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

394

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

754

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

478

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

454

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

1031

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

658

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

554

2023.09.20

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

37

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

php-src源码分析探索
php-src源码分析探索

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号