bject.create 的学习笔记

Object.create 的学习笔记

首先,先思考一下,该方法可以创建一个对象,但我为什么不直接使用{}呢?

使用

1
Object.create(proto, [propertiesObject]);
  • proto 是新创建对象的原型对象
  • propertiesObject 是可选的,是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)

比如以下例子:

1
2
3
4
5
6
7
8
const o = Object.create(null, {
name: {
writable: true,
configurable: true,
enumerable: true,
value: 'default name.'
}
});

再使用{}创建对象 x:

1
2
3
const o = {
name: 'default name.',
};

区别

这两者有什么区别呢?用 chrome 控制台查看以下结果:


可以看出,用{}创建的对象包含了__proto__属性,而用Object.create创建的并没有包含该属性,所以用这种方式创建的对象会非常干净,没有包含原型链上的方法,一般可以做 map 使用。

[本文谢绝转载,谢谢]

粤ICP备2022084378号