【ES6】—【必备知识】—对象的扩展

news/2024/7/10 23:40:49 标签: es6, javascript, 开发语言

在这里插入图片描述

一、属性简洁表示法

  1. ES5 写法
javascript">let name ='xiao'
let age = 30
let obj = {
	name: name,
	age: age
}
console.log(obj)
// {name: 'xiao', age: 30}
  1. ES6 简洁写法
    对象的属性名 和 属性值的变量名相同,可以简写成 一个属性名
javascript">let name ='xiao'
let age = 30
let obj = {
	name,
	age
}
console.log(obj)
// {name: 'xiao', age: 30}

二、属性名表达式

  1. 当属性名是一个变量时,需要加中括号,才能识别
javascript">let s = 'school'
let obj = {
	s: 'imooc'
}
console.log(obj)
// {s: 'imooc'}
javascript">let s = 'school'
let obj = {
	[s]: 'imooc'
}
console.log(obj)
// {school: 'imooc'}
  1. 声明对象方法时,可以省略冒号和function
javascript">let name = 'xiaoxiao'
let obj = {
	name,
	study: function () {
		console.log(this.name + '正在学习')
	}
	// 优化后
	study () {
		console.log(this.name + '正在学习')
	}
}
obj.study()
// xiaoxiao正在学习

三、Object.is() 判断两个值是否相同

javascript">console.log(Object.is(1, '1'))
// false
console.log(Object.is(NaN, NaN))
// true
console.log(Object.is(+0, -0))
// false
let obj1 = {
	name: 'xiaoxiao',
	age:34
}
let obj2 = {
	name: 'xiaoxiao',
	age:34
}
console.log(obj1 === obj2)
// false
console.log(Object.is(obj1 , obj2 ))
// false
// 引用数据类型:再栈内存中的值 是一个引用地址,真正的内容是存在堆内存中,每次新建一个对象,都会再堆内存里面开辟一个新的内存空间
obj1 = obj2  // 内存合并,指向了一个堆内存空间
console.log(Object.is(obj1 , obj2 ))
// true

四、扩展运算符与Object.assign()

  1. 对象的扩展运算符
javascript">let x = {
	a: 3,
	b: 4
}
let y = {...x}
console.log(y)
// {a: 3, b: 4}
  1. Object.assign() 合并对象
javascript">let x = {
	a: 3,
	b: 4
}
let y = {
	c: 5,
	a: 8
}
Object.assign(x, y)
console.log(x)
// {a: 8, b: 4, c: 5}

五、in 判断数组某个索引是否有值

javascript">let arr = [1, 2, 3]
console.log(3 in arr)
// false
console.log(0 in arr)
// true

六、对象的遍历方式

1. for in 遍历

javascript">let obj = {
	name: 'xiaoxiao',
	age: 30,
	sex: '男'
}
for (let key in obj) {
	console.log(key, obj[key])
}
// name xiaoxiao
// age 30
// sex 男

2. Object.keys() + forEach 遍历

javascript">let obj = {
	name: 'xiaoxiao',
	age: 30,
	sex: '男'
}
Object.keys(obj).forEach(key => {
	console.log(key, obj[key])
})
// name xiaoxiao
// age 30
// sex 男

3. Object.getOwnPropertyNames() + forEach 遍历

javascript">let obj = {
	name: 'xiaoxiao',
	age: 30,
	sex: '男'
}
Object.getOwnPropertyNames(obj).forEach(key => {
	console.log(key, obj[key])
})
// name xiaoxiao
// age 30
// sex 男

4. Reflect.ownKeys() + forEach 遍历

javascript">let obj = {
	name: 'xiaoxiao',
	age: 30,
	sex: '男'
}
Reflect.ownKeys(obj).forEach(key => {
	console.log(key, obj[key])
})
// name xiaoxiao
// age 30
// sex 男

http://www.niftyadmin.cn/n/4963003.html

相关文章

NO.07 MyBatis之动态Sql语句

目录 1、前言 2、 动态Sql之if标签 3、 动态Sql之where标签 4、 动态Sql之trim标签 5、动态Sql之choose标签、when标签、otherwise标签 6、 动态Sql之foreach标签 6.1 使用foreach遍历array数组 6.2 使用foreach遍历List集合 6.3 使用foreach遍历Map集合 7、动态Sql之…

【Kubernetes】Kubernetes的监控工具Promethues

Prometheus 一、Prometheus 概念1. Prometheus 概述2. Prometheus 的监控数据3. Prometheus 的特点4. Prometheus 和 zabbix 区别5. Prometheus 的生态组件5.1 Prometheus server5.2 Client Library5.3 Exporters5.4 Service Discovery5.5 Alertmanager5.6 Pushgateway5.7 Graf…

实验六 u-boot-2013.01移植

【实验目的】 了解u-boot 的代码结构及移植的基本方法 【实验环境】 ubuntu 14.04发行版FS4412实验平台交叉编译工具arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 一、建立自己的平台 下载uboot源码 在uboo…

API接口文档利器:Swagger 和 接口调试利器:Postman

2.接口相关工具 2.1API接口文档利器:Swagger 2.1.1Swagger介绍 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务 (https://swagger.io/)。 它的主要作用是: 使得前后端分离开发更加方便&#xff0…

RCU安全引用计数

原文网址:https://lwn.net/Articles/93617 原文作者:Corbet 原文时间:2004年7月14日 内核提供了一种用于实现引用计数的简单机制kref;该机制是今年3月份完成的。kref机制的核心思想是,提供支持原子操作的计数器&…

动态不确定性的动态S过程(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Sentinel 控制台(集群流控管理)

规则配置 要通过 Sentinel 控制台配置集群流控规则&#xff0c;需要对控制台进行改造。我们提供了相应的接口进行适配。 从 Sentinel 1.4.0 开始&#xff0c;我们抽取出了接口用于向远程配置中心推送规则以及拉取规则&#xff1a; DynamicRuleProvider<T>: 拉取规则Dy…

LLM 生成式配置的推理参数温度 top k tokens等 Generative configuration inference parameters

在这个视频中&#xff0c;你将了解一些方法和相关的配置参数&#xff0c;这些参数可以用来影响模型在下一个词生成时的最终决策方式。如果你在Hugging Face网站或AWS的游乐场中使用过LLMs&#xff0c;你可能已经看到了这些控制选项&#xff0c;用来调整LLM的行为。每个模型都暴…