Object.create的作用和使用方法
日期:2018-11-15
来源:程序思维浏览:3204次
Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法。
Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ;
obj:一个对象,应该是新创建的对象的原型。
propertiesObject:可选。该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符(这些属性描述符的结构与Object.defineProperties()的第二个参数一样)。注意:该参数对象不能是 undefined,另外只有该对象中自身拥有的可枚举的属性才有效,也就是说该对象的原型链上属性是无效的。
那如果将var car2=Object.create(car)又发生了什么呢?
function Car () {
this.color = "red";
this.person='张三'
}
Car.prototype.sayHi=function(){
console.log('你好')
}
var car =new Car();
var car2 = Object.create(car);
car2.person ='李四';
console.log(`car是${car.person},car2是${car2.person}`)//car是张三,car2是李四
相当于实现了原型继承方式(注意不是原型链继承),本质上来说是对一个对象进行了浅拷贝
最终结论:
1. Object.create(o),如果o是一个构造函数,则采用这种方法来创建对像没有意义
2.Object.create(o),如果o是一个字面量对象或实例对象,那么相当于是实现了对象的浅拷贝
精品好课