设计思想:没有使用严格的构造函数,必须有一个对象可以作为另一个对象的基础,将源对象传入Object.create()函数,再修改目标对象
核心代码:
function object(sourceObj) {
function Man4() {};
Man4.prototype = sourceObj;
return new Man4();
}
ES5添加了Object.create()
实现了这里object()
的功能,规范了原型式继承,
该方法接收两个参数:
1、新对象的原型对象;
2、新对象的定义额外属性的对象
;
Object.create()
方法的第二个参数与Object.defineProperty()
的第二个参数格式相同
代码:
var Man4 = Object.create(Person4, {
name: {
value:
enumerabel:
}
})
// 以这种方式指定的任何属性都会覆盖原型对象的同名属性
适用场景:让一个对象与另外一个对象保持相似
缺点:与原型链继承的缺点相同
网友评论