js的es6的对象属性描述符

53 阅读1分钟

属性描述符

  1. 获取属性描述符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//是否可以重新配置描述符对象 
//}
  1. 修改属性描述符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')//[]