1.原型链继承
2.构造继承
3.实例继承
4.拷贝继承
5.组合继承
6.寄生组合继承
<script type="text/javascript"> 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 cat.eat('fish');//cat正在吃:fish cat.sleep();//cat 正在睡觉 /!*instanceof运算符判断一个构造函数的prototype属性所指的对象是否在另外一个要检测对象的原型链上*!/ console.log(cat instanceof Animal);//true console.log(cat instanceof Cat);//true*/ /*构造继承*/ /*function Cat(name){ Animal.call(this); this.name = name || 'Tom'; } var cat = new Cat(); console.log(cat.name);//Tom cat.sleep();//Tom 正在睡觉 console.log(cat instanceof Animal);//false console.log(cat instanceof Cat);//true*/ /*实例继承*/ /*function Cat(name){ var instance = new Animal(); instance.name = name || 'xiaoqing'; return instance; } var cat = new Cat(); console.log(cat.name);//xiaoqing cat.sleep();//xiaoqing 正在睡觉 console.log(cat instanceof Animal);//true console.log(cat instanceof Cat);//false*/ /*拷贝继承*/ /*function Cat(name) { var animal = new Animal(); for(var p in animal){ Cat.prototype[p] = animal[p]; } Cat.prototype.name = name || 'Tom'; } var cat = new Cat(); console.log(cat.name);//Tom cat.sleep();//Tom 正在睡觉 console.log(cat instanceof Animal);//false console.log(cat instanceof Cat);//true*/ /*组合继承*/ /*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);//Tom cat.sleep();//Tom 正在睡觉 console.log(cat instanceof Animal);//true console.log(cat instanceof Cat);//true*/ /*寄生组合继承*/ function Cat(name) { Animal.call(this); this.name = name || "pxq"; } (function(){ //创建一个没有实力方法的类 var Super = function(){ }; Super.prototype = Animal.prototype; //将实例作为子类的原型 Cat.prototype = new Super(); })(); var cat = new Cat(); console.log(cat.name);//pxq cat.sleep();//pxq 正在睡觉 console.log(cat instanceof Animal);//true console.log(cat instanceof Cat);//true Cat.prototype.constructor = Cat; </script>
参考:https://www.cnblogs.com/humin/p/4556820.html
这个不错的:https://github.com/mqyqingfeng/Blog/issues/16