ES6之Object
2023-03-14 22:40:01 时间
- 属性简洁表示法。
- 属性名表达式。
- Object.is():替代===,解决NaN问题。
- Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象。(浅拷贝)
- 对象的遍历方式。结合ES5一起复习了吧:
- for...in。(不包括不可枚举属性,会遍历出原型属性)
- Object.keys()用于返回对象所有key组成的数组。(不可获得不可枚举属性,仅自身属性)
- Object.getOwnPropertyNames()用于返回对象所有key组成的数组。(仅自身属性,包括不可枚举属性)
- Reflect.ownKeys()用于返回对象所有key组成的数组。(包括不可枚举属性,包括方法属性)
// 属性简洁表示法
let name = 'xiecheng'
let age = 34
let obj = {
name,
age,
study() {
console.log(this.name + '正在学习')
}
}
// 属性名表达式
let s = 'school'
let obj = {
foo: 'bar',
[s]: 'wang.haoyu'
}
// Object.is()
let obj1 = { // new Object()
name: 'wang.haoyu',
age: 34
}
let obj2 = { // new Object()
name: 'wang.haoyu',
age: 34
}
console.log(obj1 == obj2) // false
console.log(Object.is(obj1, obj2)) // false
let obj2 = obj1
console.log(Object.is(obj1, obj2)) // true
// Object.assign()
const target = {
a: 1,
b: 2
}
const source = {
b: 4,
c: 5
}
const returnedTarget = Object.assign(target, source)
console.log(target)
// expected output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget)
// expected output: Object { a: 1, b: 4, c: 5 }
let target = {
a: {
b: {
c: 1
},
e: 4,
f: 5,
g: 6
}
}
let source = {
a: {
b: {
c: 1
},
e: 2,
f: 3
}
}
Object.assign(target, source)
console.log(target) // 浅拷贝 丢失g属性
// Object的遍历
let obj = {
name: 'wang.haoyu',
age: 34,
school: 'colleges'
}
// Array中演示过,for...in不能够用于遍历Array,for...in的作用是用于遍历对象的。
for (let key in obj) {
console.log(key, obj[key])
}
Object.keys() // 用于返回对象所有key组成的数组。
Object.keys(obj).forEach(key => {
console.log(key, obj[key])
})
Object.getOwnPropertyNames() // 用于返回对象所有key组成的数组。
Object.getOwnPropertyNames(obj).forEach(key => {
console.log(key, obj[key])
})
Reflect.ownKeys() // 用于返回对象所有key组成的数组。
Reflect.ownKeys(obj).forEach(key => {
console.log(key, obj[key])
})
复制代码
相关文章
- Microsoft office Word 下载安装教程
- 70% 的应用程序发布 5 年后,至少包含一个漏洞
- Microsoft Office Word2016下载与安装教程
- 为谷歌工作 16 年被当“垃圾”无情辞退,数千网友留言:为公司“卖命”不值得
- KRIe:一款带有eBPF的Linux内核运行时安全检测工具
- 怎样下载安装word2010文档软件(图文详解)
- 再度思考CSMA
- 百度出手,国产版 ChatGPT 要来了
- 攻击者可滥用 GitHub 代码空间传递恶意软件
- Fuzzable:一款基于静态分析实现的可模糊测试的自动化目标识别工具
- ChatGPT保姆级教程,一分钟学会使用ChatGPT!
- 乌克兰新闻机构遭俄军事黑客组织攻击
- 宜家EDI IFTMBC运输预定确认详解
- 指导了上百万程序员,《代码大全》之父和你聊聊软件开发素养|独家探访“编程圣经”背后故事
- Salamandra:一款功能强大的麦克风窃听检测工具
- 云与信任——未来安全的战场
- 俄IT巨头源代码被一锅端,公司否认黑客入侵
- 2022 中国开源年度报告来了!带你看懂中国开源过去这一年
- (二)vuex 使用 Ts推断类型
- 浅析AI视频监控能力在老旧小区改造升级中的应用