对象字面量与新增 API
约 293 字小于 1 分钟
2026-02-26
ES6 在对象能力上有两条主线:
- 对象字面量语法更紧凑。
Object.*新 API 补齐常见数据操作场景。
对象字面量增强
属性简写
function createUser(loginId, nickname) {
return {
loginId,
nickname
}
}方法简写
const user = {
name: '张三',
sayHello() {
return `hello ${this.name}`
}
}计算属性名
const key = 'level'
const profile = {
[key]: 5
}Object.is
Object.is 与 === 的差异主要在两个边界:
Object.is(+0, -0) === falseObject.is(NaN, NaN) === true
console.log(Object.is(+0, -0)) // false
console.log(Object.is(NaN, NaN)) // trueObject.keys / values / entries
它们都只返回“对象自身的可枚举属性”。
keys
const obj = { a: 1, b: 2 }
console.log(Object.keys(obj)) // ['a', 'b']values
const obj = { a: 1, b: 2 }
console.log(Object.values(obj)) // [1, 2]entries
const obj = { a: 1, b: 2 }
console.log(Object.entries(obj)) // [['a', 1], ['b', 2]]Object.fromEntries
Object.fromEntries 是 Object.entries 的逆过程,常用于 Map -> Object。
const map = new Map([
['name', 'zs'],
['age', 18]
])
const obj = Object.fromEntries(map)
console.log(obj) // { name: 'zs', age: 18 }演示:对象与 Map 的双向转换
<!doctype html>
<html lang="zh-CN">
<body>
<pre id="out"></pre>
<script>
const user = { name: 'zhangsan', score: 100 }
const asMap = new Map(Object.entries(user))
asMap.set('score', 120)
const back = Object.fromEntries(asMap)
document.getElementById('out').textContent = JSON.stringify(back, null, 2)
</script>
</body>
</html>