Skip to content

Object

Object.assign

通过复制一个或多个对象来创建一个新的对象。 Object.assign() 只复制属性值,假如源对象是一个对象的引用,它仅仅会复制其引用值。

js
const target = { a: 1, b: 2 }
const source = { b: 4, c: 5 }

const returnedTarget = Object.assign(target, source)
console.log(returnedTarget)
// { a: 1, b: 4, c: 5 }

console.log(console.log(target))
// { a: 1, b: 4, c: 5 }

TIP

  • key 值相同时,后面的 value 会覆盖之前的 value
  • Object.assign() 的第一个参数会发生变化

复制对象

js
const target = { a: 1, b: 2 }
const copy = Object.assign({}, target)
console.log(copy)
// { a: 1, b: 2 }

Object.keys

返回一个包含所有给定对象自身可枚举属性名称的数组。

js
const testObject = {
  a: 1,
  b: 2,
}
console.log(Object.values(testObject))
// ['a', 'b']

Object.values

返回给定对象自身可枚举值的数组。

js
const testObject = {
  a: 1,
  b: 2,
}
console.log(Object.values(testObject))
// [1, 2]

Object.entries

返回给定对象自身可枚举属性的 [key, value] 数组。

Object.entries()返回一个数组,其元素是与直接在 object 上找到的可枚举属性键值对相对应的数组。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。

js
const testObject = {
  a: 1,
  b: 2,
}
Object.entries(testObject).forEach(([key, value]) => {
  console.log(`key: ${key}, value: ${value}`)
  // key: a, value: 1
  // key: b, value: 2
})

Object 转化为 Map

js
const testObject = {
  a: 1,
  b: 2,
}
const map = new Map(Object.entries(testObject))
console.log(map)
// Map(2) {'a' => 1, 'b' => 2}