参考

方法

Object构造函数的方法

assign

Object.assign()

通过复制一个或多个对象来创建一个新的对象。


用Object.assign常见用途

1
2
3
4
5
6
7
8
9
10
11
12
// 语法
Object.assign(target, ...sources)
1.为对象添加属性
2.为对象添加方法
3.克隆对象
4.合并多个对象
5.为属性指定默认值

// 将多个对象合并到某个对象。
const merge = (target, ...sources) => Object.assign(target, ...sources)
// 如果希望合并后返回一个新对象,可以改写上面函数,对一个空对象合并。
const merge = (...sources) => Object.assign({}, ...sources)


create

Object.create()

使用指定的原型对象和属性创建一个新对象。


用Object.create实现类式继承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Shape - 父类(superclass)
function Shape() {
this.x = 0;
this.y = 0;
}

// 父类的方法
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info('Shape moved.');
};

// Rectangle - 子类(subclass)
function Rectangle() {
Shape.call(this); // call super constructor.
}

// 子类续承父类
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;

var rect = new Rectangle();

console.log('Is rect an instance of Rectangle?',
rect instanceof Rectangle); // true
console.log('Is rect an instance of Shape?',
rect instanceof Shape); // true
rect.move(1, 1); // Outputs, 'Shape moved.'


defineProperty

Object.defineProperty()

给对象添加一个属性并指定该属性的配置。

Object.defineProperties()

给对象添加多个属性并分别指定它们的配置。

Object.entries()

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

Object.freeze()

冻结对象:其他代码不能删除或更改任何属性。

Object.getOwnPropertyDescriptor()

返回对象指定的属性配置。

Object.getOwnPropertyNames()

返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。

Object.getOwnPropertySymbols()

返回一个数组,它包含了指定对象自身所有的符号属性。

Object.getPrototypeOf()

返回指定对象的原型对象。

Object.is()

比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。

Object.isExtensible()

判断对象是否可扩展。

Object.isFrozen()

判断对象是否已经冻结。

Object.isSealed()

判断对象是否已经密封。

Object.keys()

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

Object.preventExtensions()

防止对象的任何扩展。

Object.seal()

防止其他代码删除对象的属性。

Object.setPrototypeOf()

设置对象的原型(即内部[[Prototype]]属性)。

Object.values()

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