属性描述符
- 获取属性描述符Object.getOwnPropertyDescriptor(obj,'name')
let obj = { name: 'xiaoming', age: 25 }
let ObjAttr = Object.getOwnPropertyDescriptor(obj, 'name')
console.log(ObjAttr)
// {
// value: 'lfx',//属性的值
// writable: true,//属性值是否可以被修改
// enumerable: true,//是否可以被遍历
// configurable: true//是否可以重新配置描述符对象
//}
- 修改属性描述符Object.defineProperty()
let obj = { name: 'xiaoming', age: 25 }
Object.defineProperty(obj,'name',{
value: 'xiaohong',//属性的值
writable: true,//属性值是否可以被修改
enumerable: true,//是否可以被遍历
configurable: true//是否可以重新配置描述符对象
})
console.log(obj)//{ name: 'xiaohong', age: 25 }
3.getter和setter
const obj = {}
let value = null
Object.defineProperty(obj,'name',{
get(){//用于拦截 obj.name
return value
},
set(val){//用于设置值: obj.name ='xiaoming'
value = val//通过全局变量进行修改
}
})
console.log(obj.name)//null
obj.name = 'xiaoming'
console.log(obj.name)//xiaoming
键值对
let obj = { name:'xiaoming', age:25 }
let keys = Object.keys(obj)//获取对象中所有的key返回一个数组
console.log(keys)//[ 'name', 'age' ]
let values = Object.values(obj)//获取对象中所有的value返回一个数组
console.log(values)//[ 'xiaoming', 25 ]
let entries = Object.entries(obj)//获取对象中所有的key和value返回一个二维数组 console.log(entries)//[ [ 'name', 'xiaoming' ], [ 'age', 25 ] ]
let json = Object.fromEntries([['name','xiaohong'],['age',18]])//将二维数组转换为对象
console.log(json)//{ name: 'xiaohong', age: 18 }
Set
let arr = [1,2,3,4,5,6,5,4,3,2,1,7]
let set = new Set(arr)//转换为set
let newArr = Array.from(set)//set转换为数组
set.add(11)//添加
console.log(set,'set')
set.delete(1)//删除
console.log(set,'set')
let has = set.has(101)//判断是否有这个参数返回true和false
console.log(has)
let len = set.size//获取set的长度
console.log(len)
set.clear()//clear清除
console.log(set,'set')
new Map
new Map():定义一个新的键值对的集合但是,键不局限与传统的字符串各种类型的值都可以当作键
let map = new Map([["name",'xxx']])
console.log(map,'初始值')//[{name:"xxx"}]
map.set('age',18)
console.log(map,'set')//[{name:'xxx'},{age:'18'}]
let len = map.size
console.log(len,'size')//2
let name = map.get('name')
console.log(name,'get')//xxx
let ageisShow = map.has('age')
console.log(ageisShow,'has')//true
map.delete('name')
console.log(map,'delete')//[{age:18}]
map.clear()
console.log(map,'clear')//[]