💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 对象的扩展 1. 对象字面量声明形式增加了属性名表达式 let obj = { [ 'a' + 'b' ]: 3 } 2. 如果属性名表达式的结果是一个对象,则值会成为 ‘[ object Object ]’,因为对象的键名只接受字符串做为键名 3. 增加了函数的name属性,为函数的名称 4. 增加了super关键字,表示原型对象,只能用在对象方法中( let obj = { fn(){} } ),用在其它地方都会报错 5. 增加了对象的解构赋值,解构赋值是浅拷贝,只能解构自身的属性,不能解构继承的属性 let {x, ...y} = { x:1, c: 2 } 6. ... 扩展运算符,将参数对象所有的可遍历属性,拷贝到新对象之中,相当于Object.assign() let obj = { ...obj1 } || let obj = { ...{x: 2} } ...(x > 1 ? {a: 1} : {}) 也可以跟表达式 7. 对象的每个属性都有属性描述符 Descriptor ``` let obj = { foo: 123 }; Object.getOwnPropertyDescriptor(obj, 'foo') { value: 123, writable: true, //值是否可修改 enumerable: true, //可枚举 configurable: true //是否可删除 get(){} set(){} } ``` ### 对象的方法扩展 1. Object.is() Object.is(NaN, NaN) true / Object.is(+0, -0) false 2. Object.getOwnPropertyDescriptor( obj, 'a' ) 获取对象属性的描述对象 3. Object.getOwnPropertyDescriptors( obj ) 4. Object.setPrototypeOf( obj, prototype ) 设置obj对象的原型对象,与__proto__效果一样,这是ES6推荐的原型对象 设置方式 5. Object.keys() 返回对象自身可遍历的属性名为集合的数组 (会过滤Symbol属性) 6. Object.values() 返回对象自身可遍历的属性值为集合的数组,如果属性名是数字,则会根据属性名的大小顺序 来进行排列,返回对象的属性值, (会过滤Symbol值) 7. Object.entries() 返回对象返回的键值对组成的二维数组 [ [a: 1], [b: 2] ] 8. Object.fromEntries() 是Object.entries的逆操作,用于将键值对数组转换为对象