最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • JavaScript中的继承之类继承

    继承简介

    在JS中继承是一个非常复杂的话题,比其他任何面向对象语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。在JS中想要达到继承公用成员的目的,需要采取一系列措施。JS属于原型式继承,得益于这种灵活性,我们既可以使用标准的基于类的继承,也可以使用更微妙一些的原型式继承。在JS中应该要明确一点,一切继承都是通过prototype来进行的,且JS是基于对象来继承的。

    继承:

    function Animal(name){ 
    this.name = name; 
    this.showName = function(){ 
    alert(this.name); 
    } 
    } 
    function Cat(name){ 
    Animal.call(this, name); 
    } 
    var cat = new Cat("Black Cat"); 
    cat.showName();

    Animal.call(this) 的意思就是使用 Animal对象代替this对象,那么 Cat中不就有Animal的所有属性和方法了吗,Cat对象就能够直接调用Animal的方法以及属性了.

    多继承:

    function Class10() 
    { 
    this.showSub = function(a,b) 
    { 
    alert(a-b); 
    } 
    } 
    function Class11() 
    { 
    this.showAdd = function(a,b) 
    { 
    alert(a+b); 
    } 
    } 
    function Class2() 
    { 
    Class10.call(this); 
    Class11.call(this); 
    }

    很简单,使用两个 call 就实现多重继承了

    当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴,只是在此说明call 的用法。说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments。

    下面给大家介绍如何在JavaScript中实现简单的继承?

    下面的例子将创建一个雇员类Employee,它从Person继承了原型prototype中的所有属性。

    function Employee(name, sex, employeeID) {
    this.name = name;
    this.sex = sex;
    this.employeeID = employeeID;
    }
    // 将Employee的原型指向Person的一个实例
    // 因为Person的实例可以调用Person原型中的方法, 所以Employee的实例也可以调用Person原型中的所有属性。
    Employee.prototype = new Person();
    Employee.prototype.getEmployeeID = function() {
    return this.employeeID;
    };
    var zhang = new Employee("ZhangSan", "man", "");
    console.log(zhang.getName()); // "ZhangSan

    上面关于继承的实现很粗糙,并且存在很多问题:

    在创建Employee构造函数和原型(以后简称类)时,就对Person进行了实例化,这是不合适的。

    Employee的构造函数没法调用父类Person的构造函数,导致在Employee构造函数中对name和sex属性的重复赋值。

    Employee中的函数会覆盖Person中的同名函数,没有重载的机制(和上一条是一个类型的问题)。

    创建JavaScript类的语法过于零散,不如C#/Java中的语法优雅。

    实现中有constructor属性的指向错误。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » JavaScript中的继承之类继承
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情