一、二者的联系和区别(优缺点),关于原型继承: (1)原型继承在有别于类继承是由于继承不在对象自己,而在对象的原型上(prototype); (2)每个对象都有原型,在浏览器中它体如今一个隐藏的__proto__属性上; (3)在一些现代浏览器中能够更改它们:好比在zepto中,就是经过添加zepto的fn对象到一个空的数组的__proto__属性上去,从而使得该数组成为一个zepto对象而且拥有全部的方法; (4)当一个对象须要调用某个方法时,它回去最近的原型上查找该方法,若是没有找到,它会再次往下继续查找;逐级查找,一直找到了要找的方法,这些查找的原型构成了该对象的原型链条; (5)原型最后指向的是null,原型继承,就是将父对像的方法给子类的原型,可是子类的构造函数中不拥有这些方法和属性。 二、关于基于类的继承和原型对比起来,构造函数(类)式继承的不一样: (1)构造函数继承的方法都会存在父对象之中,每一次实例,都回将funciton保存在内存中,这样的作法会带来性能上的问题; (2)其次类式继承是不可变的:在运行时,没法修改或者添加新的方法,这种方式是一种固步自封的死方法; (3)而原型继承是能够经过改变原型连接而对子类进行修改的,另外就是类式继承不支持多重继承,而对于原型继承来讲,只须要写好extend对对象进行扩展便可。 三、组合模式,是结合类继承和原型继承的各自优势来进行对父类的继承: (1)用类式继承属性,而原型继承方法:这种模式避免了属性的公用; (2)由于一般来讲,每个子类的属性都是私有的,而方法获得了统一。数组