创建一个人类然后继承学生类以及教师类,分别通过三种不同的继承方式,总结优点缺点

本文深入探讨了JavaScript中的三种继承方式:原型链继承、冒充继承和混合继承。原型链继承通过设置子类原型为父类实例实现,但无法初始化属性;冒充继承通过call或apply改变this指向,但无法继承原型链上的方法;混合继承结合两者优点,既能初始化属性,又能继承原型链。

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

function People(name,age,sex){

        this.name = name

        this.age = age

        this.sex = sex

}

People.prototype.eat = function(){

        console.log(this.name+"吃苹果")

}

一、原型链继承:将原型改成对应的对象

function Student(name,age,sex){

}

Student.prototype = new People("李白","18","男") //属性定死

问题:无法初始化对应的属性。

二、冒充继承:通过call或者apply改变原有函数的this指向

function Teacher(name,age,sex){

        People.call(this,name,age,sex)

}

问题:不能继承人类原型链上的属性方法。

三、混合继承:冒充+原型链

function Student(name,age,sex){

        People.call(this,name,age,sex)

}

Student.prototype = new People()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值