对象新增的常用方法

1. Object.assign() 将所有可枚举属性的值从一或多个源对象 复制 到目标对象。返回目标对象。

常用于拷贝对象的值生成新对象。

特别注意,对象的复制一律不要用 = (用=给的是引用,会混乱),要用 Object.assign()!

Object.assign(target, ...sources)

参数:
target 目标对象
sources (多个)源对象。

返回值:
目标对象。

例子

const target = { a: 1 };

const source1 = { b: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

注意点:

  • Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。

Object.assign方法的常见用途

  • 为对象添加属性、方法
  • 克隆对象
  • 合并多个对象
  • 为属性指定默认值

具体参考: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

2. Object.freeze(obj) 冻结一个对象,返回被冻结的对象

冻结指不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性

也就是说,这个对象永远是不可变的

export const objA = {
 a:'A'
}

Object.freeze(objA);

3. Object.getPrototypeOf() 从子类上获取父类

Object.getPrototypeOf(ColorPoint) === Point
// true

可用这个方法判断,一个类是否继承了另一个类

4. Object.keys()

返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。

var obj = { foo: 'bar', baz: 42 };
Object.keys(obj)
// ["foo", "baz"]

5. Object.values()

Object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。

const obj = { foo: 'bar', baz: 42 };
Object.values(obj)
// ["bar", 42]

6. Object.entries

Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。

const obj = { foo: 'bar', baz: 42 };
Object.entries(obj)
// [ ["foo", "bar"], ["baz", 42] ]

results matching ""

    No results matching ""