zoukankan      html  css  js  c++  java
  • Atitit.实现继承的原理and方法java javascript .net c# php ...

    Atitit.实现继承的原理and方法java javascript .net c# php ...

    1. 实现继承的问题 1

    2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1

    3. 2.属性如何继承? 2

    4. 几种继承方式的比较    2

    5. 常用的apply ,call方法 3

    6. 参考 3

    1. 实现继承的问题


    JavaScript中要实现继承,其实就是实现三层含义:
    1、子类的实例可以共享父类的方法;
    2、子类可以覆盖父类的方法或者扩展新的方法;
    3、子类和父类都是子类实例的类型

    要解决两个问题:1.如何拷贝基类方法?2.属性如何继承? 


    JavaScript中,并不直接从语法上支持继承,但是可以通过模拟的方法来实现继承,以下是关于实现继承的几种方法的总结:
    1、构造继承法
    2、原型继承法
    3、实例继承法
    4、拷贝继承法

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

    2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象

    1.对于问题1,一般采用prototype原型方式,通过冒充对象。

     /*更改Member的prototype属性,以实现继承*/

    09

         Member.prototype=new User();

    2.拷贝基类方法代码

    1

    Member.prototype=new User();

      此行代码的含义是new 一个User对象,将此引用传递给Member的原型,这样完成了基类方法的拷贝工作。(备注:此处代码一定要先执行,然后再添加新的方法)。

    3. 2.属性如何继承?

    对于问题2,一般采用调用基类构造函数 

     /*初始化基类参数*/

    06

             User.call(this,userid,uname,uage,uscore);

    1.调用基类构造函数代码

    1

    User.call(this,userid,uname,uage,uscore);

    此行代码的含义是执行User类的构造函数,并且将Member的this指针域传递给User类,此时User类运行构造函数时,this指向的是Member对象。

    4. 几种继承方式的比较 
      

    From JavaScript中继承的实现方法 - xieex - 博客园.htm

    比较项

    构造继承

    原型继承

    实例继承

    拷贝继承

    静态属性继承

    N

    Y

    Y

    Y

    内置(核心)对象继承

    N

    部分

    Y

    Y

    多参多重继承

    Y

    N

    Y

    N

    执行效率

    多继承

    Y

    N

    N

    Y

    instanceof

    false

    true

    false

    false

    5. 常用的apply ,call方法

    每种方法都有其适用环境,比如,如果父类带有有参构造函数:这种情况下,prototype就不适用了,可选用apply或call;

     在apply和call中,又该如何取舍呢?在OO的继承中,子类继承于父类,那么它应该也是父类的类型。即,ChildClassByCall、ChildClassByApply应该也是ParentClass类型,但我们用"instanceof"检测一下就会发现,通过apply继承的子类,并非ParentClass类型。所以,我们建议用call + prototype 来模拟实现继承。据说,Google Map API 的继承就是使用这种方式哟。

    apply 实现

    参考::JavaScript继承的模拟实现 - 牦牛 - 博客园.htm

    6. 参考

    javascript实现类、继承、多态(原创) _ 耕书录.htm

    JavaScript中继承的实现方法 - xieex - 博客园.htm

    我要啦免费统计
  • 相关阅读:
    【crontab】误删crontab及其恢复
    New Concept English there (7)
    New Concept English there (6)
    New Concept English there (5)
    New Concept English there (4)
    New Concept English there (3)
    New Concept English there (2)Typing speed exercise
    New Concept English there (1)Typing speed exercise
    New Concept English Two 34 game over
    New Concept English Two 33 94
  • 原文地址:https://www.cnblogs.com/attilax/p/15199095.html
Copyright © 2011-2022 走看看