原理:将父类的实例作为子类的原型对象。
//动物整体大类 function Animal(name,sex) { this.name = name || 'Animal'; this.sex = sex || '无'; this.sleep = function () { console.log(this.name + "在睡觉"); } } //添加原型属性和方法 Animal.prototype = { eat: function () { console.log(this.name + "在吃饭"); }, play:function (){ console.log(this.name+"在玩游戏"); } } function Cat(){ } //实现原型链继承 Cat.prototype=new Animal(); Cat.prototype.name="咪咪"; Cat.prototype.sex="母"; var scat=new Cat(); scat.sleep();//咪咪在睡觉 scat.eat();//咪咪在吃饭 scat.play();//咪咪在打游戏
特点:子类的实例即是本身也是父类。 父类新增的原型方法和属性,子类对象都可以访问。 缺点:类添加属性和方法,必须在new之后或者直接写在子类里面。 不能实现多继承。 子类的实例上不能直接向父类传递参数。