JavaScript之面向对象的继承浅析2

本文深入探讨JavaScript中的组合继承,包括属性和方法的继承方式。详细介绍了如何使用构造函数的.call()方法实现属性继承,以及通过原型链实现方法继承的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 其他oop语言Java,C#,C++,PHP中的继承
    例如在PHP中的继承:
    <1> 对象的组成: 属性、方法
    <2> 继承对象的属性、方法
    <3> 继承步骤:先执行父级的构造函数;再添加自身的属性和方法

  • JavaScript中的继承(只谈组合继承)
    ①属性的继承: 构造函数的伪装 :.call() || .apply()

    ②方法的继承: 通过原型链
    父类实例化对象赋给子类原型对象 或 for-in循环 子类.prototype[i] = 父类.prototype[i]

    ③ 注意:在子类继承中,要先继承父类,然后再用原型方法写自己独有的方法,不然后写的话会覆盖掉子类的方法。

    //父类Person
    function Person(name,sex){
        this.name = name;
        this.sex = sex;
    }
    Person.prototype.sayName = function(){
        alert("My Name is " + this.name);
    }
    Person.prototype.saySex = function(){
        alert("My Sex is " + this.sex);
    }

    //Worker子类继承
    function Worker(name,sex,job){
        //此处用call方法来继承Person类中的属性,说穿了就是继承name和sex
        Person.call(this,name,sex);

        //学名:  构造函数的伪装!!!
        this.job = job;
    }
    //此处直接通过原型继承父级Person类中方法
    //Worker.prototype = Person.prototype;     学名:原型链!注意:其中涉及了对象的引用,有问题

    //如果用上述直接引用父类的话 会对父类造成影响,所以为了不影响父类,不能采用上述方法用for-in循环来做
    for(var i in Person.prototype){
        Worker.prototype[i] = Person.prototype[i];
    }

    //再添加自身(子类(Worker类))的方法
    Worker.prototype.showJob = function(){ 
        alert(this.job);
    }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值