基于类的继承和基于原型的继承相比较,各有什么优劣

 

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

posted @ 2018-12-13 20:16  其名为光  阅读(745)  评论(0编辑  收藏  举报