ES6 对象的扩展(十五)

1. 属性的简洁表示(Property Shorthand)

特性:在对象字面量中,如果属性名和变量名相同,可以省略属性名,直接使用变量值。
用法:简化对象字面量的书写。

const x = 1, y = 2;
const obj = { x, y };
console.log(obj); // 输出:{ x: 1, y: 2 }

2. 方法定义的改进(Method Definitions)

性:在对象字面量中,可以直接使用方法定义,而不需要使用 function 关键字。
用法:简化对象中方法的书写。

const obj = {sayHello() {console.log('Hello!');}
};obj.sayHello(); // 输出:Hello!

3. 计算属性名(Computed Property Names)

特性:使用方括号[]可以在对象字面量中动态地指定属性名。
用法:当属性名不是静态字符串时使用。

const key = 'a';
const obj = {[key]: 'value',['b']: 2
};
console.log(obj); // 输出:{ a: 'value', b: 2 }

4. Symbol 作为属性名

特性:可以使用 Symbol 作为对象的属性名。
用法:创建唯一的属性名,避免属性名冲突。

const mySymbol = Symbol('mySymbol');
const obj = {[mySymbol]: 'This is a symbol property'
};
console.log(obj[mySymbol]); // 输出:This is a symbol property

5. Object.is() 静态方法

特性:比较两个值是否相同,比 === 更严格,会考虑 NaN 和 -0。
用法:进行精确的值比较。

console.log(Object.is(NaN, NaN)); // 输出:true
console.log(NaN === NaN); // 输出:false
console.log(Object.is(-0, -0)); // 输出:true
console.log(-0 === 0); // 输出:true

6. Object.assign() 方法

特性:复制对象中的属性到另一个对象。
用法:对象属性的合并。

const source = { a: 1 };
const target = { b: 2 };
Object.assign(target, source);
console.log(target); // 输出:{ b: 2, a: 1 }

7. Object.getOwnPropertyDescriptors() 方法

特性:获取一个对象的所有属性描述符。
用法:获取对象属性的详细信息。

const obj = { writable: true };
Object.defineProperty(obj, 'readable', {value: true,writable: false
});
console.log(Object.getOwnPropertyDescriptors(obj));

8. Object.setPrototypeOf() 方法

特性:设置一个对象的原型(即内部 [[Prototype]] 属性)。
用法:改变对象的原型。

const proto = {};
const obj = {};
Object.setPrototypeOf(obj, proto);
console.log(Object.getPrototypeOf(obj) === proto); // 输出:true

9. Object.keys(), Object.values(), Object.entries()

特性:分别返回对象的键、值或键值对数组。
用法:遍历对象或获取对象的特定集合。

const obj = { a: 1, b: 2 };
console.log(Object.keys(obj));  // 输出:['a', 'b']
console.log(Object.values(obj)); // 输出:[1, 2]
console.log(Object.entries(obj)); // 输出:[['a', 1], ['b', 2]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图: 解决:

网络滤波器、EMI滤波器与EMC滤波器在电子元器件中的分类关系

在电子工程领域,滤波器作为关键的电子元器件,广泛应用于信号处理、电磁兼容性和电磁干扰抑制等方面。本文将详细介绍网络滤波器、EMI滤波器和EMC滤波器的基本概念、工作原理及其在电子元器件中的分类关系。 一、网络滤波器 网络滤波器是一种通过处理信号…

Laravel与现代前端:Vue.js与React的无缝集成

Laravel与现代前端:Vue.js与React的无缝集成 在现代Web开发中,Laravel作为后端框架的佼佼者,与前端技术如Vue.js和React的结合,能够创造出功能强大且用户友好的应用。本文将详细介绍如何在Laravel项目中集成Vue.js和React&#x…

脸书登录指南:如何在同一台设备登录多个Facebook账号?

海外社媒营销人员和跨境卖家现在越来越依赖社交媒体平台来拓展业务和接触潜在客户,尤其是Facebook。然而,在进行脸书登录时,你可能会问:如何在同一台设备上登录多个Facebook账号,而不违反Facebook的使用条款&#xff1…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

vivado 2019.2/modelsim SE-64 2019.2联合仿真

参考链接 需要修改的地方: 编译时几个VHDL的库会报错,将language改为verilogfamily只选择当前板子(artix-7),速度会更快,错误率更低compile library path最好选择vivado安装路径下的位置,很久之…

怎么创一个新的vue3项目

创建一个新的Vue 3项目可以通过多种方式,以下是基于Vue CLI(命令行界面)和Vue官方新的脚手架工具create-vue的详细步骤。 使用Vue CLI创建Vue 3项目 安装Vue CLI: 确保你已经安装了Node.js(建议使用LTS版本&#xff…

Python 基础——元组

1.元组:元组元素不能修改 tuple1 (1, 2, 3, 4, 5, 6) tuple1[2] 3 #该代码会显示运行错误 2.元组的一些操作 #1. tuple1 (1, 2, 3, 4, 5, 6) tuple2 tuple1[:]#将tuple1复制到tuple2#2. tuple1 (1, 2, 3, 4, 5, 6) tuple1[:4] #输出结果为(1&am…

用于大规模图像识别的深度卷积网络

概述 论文地址:https://arxiv.org/pdf/1409.1556.pdf 这项研究探讨了卷积网络深度对图像识别准确性的影响。重要的是,对具有小型卷积滤波器的网络进行的评估表明,具有 16-19 个权重层的深度网络的性能优于传统配置。这些结果使得该模型在20…

把ros消息转换成中文输出

把ros消息转换成中文输出 c实现 发布 //发布性能评估数据 /trilateration_time_log void publishTrilaterationLog(const int reflectorPanelPoints_size,const double duration_count,const std::string& resultType,const std::string& resultChineseMessage,cons…

C#绘制含流动块的管道

1,效果。 2,绘制技巧。 1,流动块的实质是使用Pen的自定义DashStyle绘制的线,并使用线的偏移值呈现出流动的效果。 Pen barPen new Pen(BarColor, BarHeight);barPen.DashStyle DashStyle.Custom;barPen.DashOffset startOffse…

MySQL-日志-优化

目录 介绍一下mysql 的日志 redo log 和binlog 的区别及应用场景 redo log 和 binlog 在恢复数据库有什么区别? redo log 是怎么实现持久化的? redo log除了崩溃恢复还有什么其他作用? (顺序写) redo log 怎么刷入磁盘的知道吗? 两阶…

重塑水利未来:智慧水利解决方案的探索与实践,从物联网、大数据到人工智能,科技如何赋能水利行业,实现智慧化管理与决策

本文关键词:智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

探索 IPython 的历史记录:全局命令的魔法

探索 IPython 的历史记录:全局命令的魔法 在数据科学和编程的世界里,IPython 以其强大的交互式特性成为了开发者和科学家们的首选工具。其中,IPython 的历史记录功能是其众多亮点之一。本文将带你深入探索如何在 IPython 中使用 %history 魔…

Python之爬虫基础

Python 是进行网络爬虫开发的热门选择,主要是因为其拥有丰富的库和框架,如 Requests、BeautifulSoup、Scrapy 等,这些工具极大地简化了网页数据的抓取和处理过程。以下是一些 Python 爬虫的基础知识和步骤: 1. 理解网络爬虫 网络…

如何通过3D开发组件HOOPS增强Navisworks数据访问?

随着建筑信息模型(BIM)和建筑、工程和施工(AEC)市场的快速发展,对Navisworks支持的需求也在不断增长。特别是在多个公司赞助Navisworks项目的大环境下,HOOPS组件的支持显得尤为重要。这些公司包括一家大型电…

【多模态学习笔记二】MINIGPT-4论文阅读

MINIGPT-4:ENHANCING VISION-LANGUAGE UNDERSTANDING WITH ADVANCED LARGE LANGUAGE MODELS 提出的MiniGPT-4使用一个投影层,将冻结的视觉编码器与冻结的先进的LLM Vicuna对齐。我们的工作首次揭示,将视觉特征与先进的大型语言模型正确对齐可以具有GPT-4所展示的许多先进的多…

从MySQL切换PostgreSQL后,改动的地方,注意事项!!!

1、大写字段加上双引号,写了脚本可以参考:mysql转pg脚本 2、IFNULL转换为COALESCE。 3、LIMIT分页两个参数一个page,limit转换为如下写法: // 计算 offset,这里假设 page 从 1 开始int offset (page - 1) * limit;sql…

导航专业入门,高考/考研假期预习指南

导航专业入门,高考/考研假期预习指南 七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验…

DRF分页器(Django Restful Framework)

资料推荐 官方文档 https://q1mi.github.io/Django-REST-framework-documentation/api-guide/pagination_zh/ B站没有好的教学视频,不建议看,直接看官方文档吧。 PageNumberPagination 此分页样式接受请求查询参数中的单个数字页码。 Request: GET h…