JS继承专题

本文详细介绍了JavaScript中的四种继承方式:原型继承、call继承、寄生组合继承和class继承。每种方式都有其特点和适用场景,例如原型继承会将父类的属性变为子类的公有属性,call继承则将父类私有属性转化为子类私有,而寄生组合继承和class继承更注重优化和标准化。通过对这些继承方式的理解和实践,开发者可以更好地掌握JavaScript的面向对象编程。
摘要由CSDN通过智能技术生成

近来有很多小伙伴都在讨论继承这一方面的知识,你所知道的js继承方式有哪些,下面来参考一下吧!

1、原型继承

把父类公有的和私有的,都变为子类实例公有的(类似)

缺点:

  1. 父类想要赋予其他实例的私有属性,也会变成子类的公有属性
  2. 子类可以基于原型链找到父类,并把它修改,这样对父类的其他实 例也会产生影响
function Parent(){
this.x=100;
}
Parent.prototype.getX=function(){
console.log(this.x);
}
let p=new Parent();
function Child(){
this.y=200;
}
Child.prototype=new Parent;
Child.prototype.getY=function(){
console.log(this.y);
}
let c=new Child();
console.dir(c);

2、call 继承

把父类的构造函数当做普通函数执行,让函数中的this指向子类的实例

把父类私有变成子类私有

缺点:无法获取父类的公有属性(普通函数执行和类的原型没什么关系)

 

function Parent(){
this.x=100;
}
Parent.prototype.getX=function(){
console.log(this.x);
}
let p=new Parent();
function Child(){
//让Parent运行,但是把它里面的this改为当前实例的this,
//这样就可以把Parent里面添加的属性给当前实例添加了
//等同于当前实例.x=100;
Parent.call(this);
this.y=200;
}
Child.prototype.getY=function(){
console.log(this.y);
}
let c=new Child();
console.dir(c);

3、寄生组合继承

通过 Object.create()来继承父类的公有属性,子类创建一个空的对象,让对象的原型为父类.prototype,不包含构造函数

function Parent(){
this.x=100;
}
Parent.prototype.getX=function(){
console.log(this.x);
}
let p=new Parent();
function Child(){
Parent.call(this);
this.y=200;
}
//创建一个this指向为Parent原型的空对象,让这个空对象指向Child的原型
Child.prototype=Object.create(Parent.prototype);
Child.prototype.getY=function(){
console.log(this.y);
}
let c=new Child();

4、class 继承

class继承中的extends 类似寄生组合式继承

class Parent{
constructor(arg) {
    this.x=100;
}
getX(){
console.log(this.x);
}
}

class Child extends Parent{
constructor(arg) {
super();
    this.y=100;
}
getY(){
console.log(this.y);
}
}
let c=new Child();
console.dir(c);

 如果看到这还是不太明白,那不妨运行一下,相信你就会懂了O(∩_∩)O

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值