zoukankan      html  css  js  c++  java
  • 基于类的继承和基于原型的继承相比较,各有什么优劣

     

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

  • 相关阅读:
    java.io.file
    连线小游戏
    发票类型区分的正则表达式(仅区分普票专票)
    mybatis: No enum constant org.apache.ibatis.type.JdbcType."VARCHAR"
    bootstrap inputfile 使用-上传,回显
    微积分极限中一例
    oracle 查看表结构语句
    redis无法连接
    项目配置shiro原缓存注解失效
    bug 找不到或无法加载主类main.java.*
  • 原文地址:https://www.cnblogs.com/wang-zhang/p/10116138.html
Copyright © 2011-2022 走看看