主函数
function People(name) {
this.type = 'prople';
this.name = name
console.log('1111', this.name);
}
People.prototype.eat = function() {
console.log('吃东西了')
}
function Man(name) {
this.name = name;
this.color = 'black';
}
原型继承
Man.prototype = new People();
// 缺点:原型是所有子类实例共享的,改变一个其他的也会改变的
console.log(Man.prototype.eat);
构造函数继承
// 在构造函数中调用父类构造函数
function Man(name) {
People.call(this)
People(name);
People.prototype.eat;
//console.log(this.name);
}
Man('aaaa')
// 缺点:不能继承父类继承, 函数在构造函数中,每一个子类实例不能共享实例,浪费内存
组合继承
//使用构造函数继承父类函数, 使用原型继承父类函数
function Man(name) {
Pepple.call(this)
}
Man.Prototype = People.prototype;
// 缺点: 父类原型和子类原型是同一个对象,无法区分子类真的是有谁构造的
组合寄生继承
// 在组合继承的继承的基础上,子类继承一个由父类原型生成的空对象
function Man(name) {
People.call(this);
}
Man.prototype = Object.create(People.prototype, {
constructor: {
value: Man
}
})
[Duck Duck Go]文章来源于 www.conardli.top/doc/javascr…