父类:
// 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); } } // 原型方法 Animal.prototype.eat = function(food) { console.log(this.name + '正在吃:' + food); };
1.原型链继承
function Cat(){ } Cat.prototype = new Animal(); Cat.prototype.name = 'cat';
2.构造继承 call
function Cat(name){ Animal.call(this); this.name = name || 'Tom'; }
5.组合继承
function Cat(name){ Animal.call(this); this.name = name || 'Tom'; } Cat.prototype = new Animal();
6寄生组合继承
function Cat(name){ Animal.call(this); this.name = name || 'Tom'; } (function(){ // 创建一个没有实例方法的类 var Super = function(){}; Super.prototype = Animal.prototype; //将实例作为子类的原型 Cat.prototype = new Super(); })();
3.实例继承
var instance = new Animal();
function Cat(name){ var instance = new Animal(); instance.name = name || 'Tom'; return instance; }
4.拷贝继承
var instance = new Animal();再遍历复制
function Cat(name){ var animal = new Animal(); for(var p in animal){ Cat.prototype[p] = animal[p]; } Cat.prototype.name = name || 'Tom'; }