Object.create( )
1.概述
Object.create()
用于创建一个新对象,使用现有的对象来作为新创建对象的原型(proto)。
2.语法
Object.create(proto)
或Object.create(proto,[propertiesObject])
1)参数
proto——新创建对象的原型对象。prpto参数需为null
或原始包装对象
(即除基本类型包装对象以外的对象),否则会抛出一个TypeError
异常。
propertiesObject——可选,也是一个对象。用于对新创建的对象进行初始化。
2)返回值
返回一个新对象,带着指定的原型对象及其属性。
3.案例使用
1、Object.create( )不传递propertiesObject
const person = {
name: 'tom',
age:18
};
const me = Object.create(person);
console.log(me); //{}
2.Object.create( )传递propertiesObject
//创建一个可写的,可枚举的,可配置的属性name和属性age
const me = Object.create(person,{
name:{
value:"peter",
writable:true,
configurable:true,
enumerable:true
},
age:{
value:20,
writable:true,
configurable:true,
enumerable:true
}
});
console.log(me); //{ name: 'peter', age: 20 }
与使用对象字面量或使用Object创建对象相比,Object.create( )创建对象的优点
const person = {
name: "tom",
};
const me = Object.create(person);
const me2 = Object(person);
console.log(person); //{ name: 'tom' }
console.log(me); //{}
console.log(me2); //{ name: 'tom' }
从示例可看出,使用字面量和使用Object创建的对象是一样的。使用Object.create()方法创建对象,对me
操作时并不会影响原有数据。
注意:Object.create( )实现的是浅拷贝。