es6对象的拓展

//对象的拓展
// let name = 'hky'
// let age = 24
// let obj = {
// name: name,
// age: age
// }
// console.log(obj)
// 属性简介表达法
// let name = 'hky'
// let age = 24
// let obj = {
// name,
// age
// }
// console.log(obj)

//属性名表达式 key值要动态 要把key值用中括号包起来
// let name = 'hky'
// let age = 24
// let s = 'school'
// let obj = {
// name,
// age,
// [s]: 'imooc',
// study(){ // => 对象中不能使用箭头函数 要用es6的简写方法
// console.log(this.name + '正在学习')
// }
// }
// obj.study()

//Object.is 是否严格相等
// console.log(Object.is(2, '2')) // false
// console.log(Object.is(NaN, NaN)) // true // 判断2个NaN比较

// let obj1 = { // 每次创建一个obj 相当于 new Object() 形成一个新的对象
// name: 'hky'
// }

// // let obj2 = { // 相当于 new Object() 相当于2个内存空间
// // name: 'hky'
// // }

// // console.log(Object.is(obj1, obj2)) // => false 值相等 但是对象不相等 是判断内存的地址

// let obj2 = obj1

// console.log(Object.is(obj1, obj2)) // => true

//拓展运算符与Object.assign()

let x = {
a: 3,
b: 4
}

// // let y = {...x} // 拓展运算符拷贝 当前对象
// let y = {
// c: 5,
// a: 6
// }
// Object.assign(y, x) //实现对象的复制 后面往前面合并
// console.log(y) // => {c: 5, a: 3, b: 4}

// in 判断当前对象是否有当前的属性
// console.log('a' in x) // => true

// console.log('aa' in x) // => false

// //in 也可以使用在数组中 判断当前位置是否有值
// let arr = [1, 2, 3]
// console.log(3 in arr) // => // 判断3下标的位置是否有值

let obj = {
name: 'hky',
age: 24,
number: 1430170438
}

//对象的遍历方法

// for (let key in obj) {
// console.log(key, obj[key])
// }

// Object.keys(obj).forEach(item => {
// console.log(item, obj[item])
// })

// Object.getOwnPropertyNames(obj).forEach(item =>{
// console.log(item, obj[item])
// })

Reflect.ownKeys(obj).forEach(key => {
console.log(key, obj[key])
})

posted @ 2021-02-22 21:46  贺可英  阅读(30)  评论(0)    收藏  举报