Object.create()
创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。
语法
Object.create(proto[, propertiesObject])
- 参数
proto
: 新创建对象的原型对象。propertiesObject
: 可选。如果没有指定为undefined
,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()
的第二个参数。
- 返回值
- 一个新对象,带着指定的原型对象和属性。
- 例外
- 如果
propertiesObject
参数是null
或非原始包装对象,则抛出一个TypeError
异常。
- 如果
创建空对象的方法和区别
var obj1 = {};
var obj2 = new Object();
var obj3 = Object.create(null)
console.log(obj1.constructor) // ƒ Object() { [native code] }
console.log(obj2.constructor) // ƒ Object() { [native code] }
console.log(obj3.constructor) // undefined
console.log(obj1.constructor === obj2.constructor) // true
使用Object.create(null)创建的对象是一个干净的对象。它指定的继承原型为null,它将不会有任何属性,甚至没有构造函数。