function Animal(name) {
this.name = name || 'Animal';
this.sleep = function() {
console.log(this.name + "正在睡觉");
}
}
Animal.prototype.eat = function(food) {
console.log(this.name + "正在吃" + food);
}
// 原型链继承
// function Cat() {}
// Cat.prototype = new Animal();
// Cat.prototype.name = 'cat';
// var cat = new Cat();
// console.log(cat.name);
// cat.eat('fish');
// cat.sleep();
// console.log(cat instanceof Animal);
// console.log(cat instanceof Cat);
// const cat = new Animal('cat');
// console.log(cat.name);
// cat.sleep();
// cat.eat('fish');
// 构造继承
// function Cat(name) {
// Animal.call(this,name);
// // this.name = name || 'Tom';
// }
// var cat = new Cat('Tom');
// console.log(cat.name);
// cat.sleep();
// console.log(cat instanceof Animal);
// console.log(cat instanceof Cat);
// 实例继承
// function Cat(name) {
// var instance = new Animal();
// instance.name = name || 'Tom';
// return instance;
// }
// var cat = new Cat();
// console.log(cat.name);
// cat.sleep();
// console.log(cat instanceof Animal);
// console.log(cat instanceof Cat);
// 拷贝继承
// function Cat(name) {
// let animal = new Animal();
// for(var p in animal) {
// Cat.prototype[p] = animal[p];
// }
// this.name = name || 'Tom';
// }
// var cat = new Cat();
// console.log(cat.name);
// cat.sleep();
// console.log(cat instanceof Animal);
// console.log(cat instanceof Cat);
// 组合继承
// function Cat(name) {
// Animal.call(this);
// this.name = name || 'Tom';
// }
// Cat.prototype = new Animal();
// Cat.prototype.constructor = Cat;
// var cat = new Cat();
// console.log(cat.name);
// cat.sleep();
// console.log(cat instanceof Animal);
// console.log(cat instanceof Cat);
// 寄生组合继承
function Cat(name) {
Animal.call(this);
this.name = name || 'Tom';
}
var Super = function() {};
Super.prototype = Animal.prototype;
Cat.prototype = new Super();
const cat = new Cat();
console.log(cat.name);
cat.sleep();
console.log(cat instanceof Animal);
console.log(cat instanceof Cat);
console