ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 对象理解 ## 一、属性类型 ### 1. 数据属性 - [[Configurable]] : 默认值为 true - [[Enumerable]] : 默认值为 true - [[Writable]] - [[Value]] ### 2. 访问器属性 - [[Configurable]] : 默认值为 true - [[Enumerable]] : 默认值为 true - [[Get]] - [[Set]] > Configurable 能否通过 delete 删除属性从而重新定义属性 能否通过 for-in 循环返回属性 ## 对象的遍历 [参考](https://juejin.im/post/5d48c275f265da03b12032a1?utm_source=gold_browser_extension) ## 二、属性的CRUD #### 遍历自身可枚举属性 返回数组 Object.keys() // 属性键 数组 Object.values() // 属性值 数组 Object.entries() // 键值对 数组 #### 遍历自身可枚举属性 和 原型链中的属性 for..in ``` let simpleColors = { colorA: 'white', colorB: 'black' }; let natureColors = { colorC: 'green', colorD: 'yellow' }; Object.setPrototypeOf(natureColors, simpleColors); Object.keys(natureColors); // => ['colorC', 'colorD'] Object.values(natureColors) Object.entries(natureColors); // [["colorC", "green"], ["colorD", "yellow"]] for (let key in natureColors) { console.log(key) } // => ['colorC', 'colorD', 'colorA', 'colorB'] ``` > Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null。 ### Object.entries() 转 Map > Object.entries() 返回的格式与Map构造函数接受的格式完全相同:(key,value) ``` let greetings = { morning: 'Good morning', midday: 'Good day', evening: 'Good evening' }; let greetingsMap = new Map(Object.entries(greetings)); greetingsMap.get('morning'); // => 'Good morning' greetingsMap.get('midday'); // => 'Good day' greetingsMap.get('evening'); // => 'Good evening' ``` 普通对象 不是Iterators 不能使用for...of,通常 ``` for (let item of Object.entries(greetings)) { console.log(key) } ``` Map提供了与Object.values()和Object.entries() 等效的方法(只是它们返回Iterators),以便为Map实例提取属性值或键值对: 1. Map.prototype.values() 等价于Object.values() 2. Map.prototype.entries() 等价于Object.entries() ``` // ... [...greetingsMap.values()]; // => ['Good morning', 'Good day', 'Good evening'] [...greetingsMap.entries()]; // => [ ['morning', 'Good morning'], ['midday', 'Good day'], // ['evening', 'Good evening'] ] ``` > greetingsMap.values()和greetingsMap.entries()返回迭代器对象。若要将结果放入数组,扩展运算符…是必要的 ## 创建对象的七种方法 ## 参考文档 【1】[标准库—Object 对象-阮一峰](https://mp.weixin.qq.com/s/wuuhbr1OByq85OTgP2XbtA)