当前位置: 首页 > news >正文

什么是继承?js中有哪儿些继承?

1、什么是继承?

继承是面向对象软件技术中的一个概念。

2、js中有哪儿些继承?

js中的继承有ES6的类class的继承、原型链继承、构造函数继承、组合继承、寄生组合继承。

2.1 ES6中类的继承

class Parent {
    constructor() {
        this.age = 18;
    }
}

class Child extends Parent {
    constructor() {
        super();
        this.name = "张三"
    }
}
let o1 = new Child();
console.log(o1,'o1');

优先使用ES6的class继承方式。

2.2 原型链继承

function Person(name) {
    this.name = "lx"
}

function Student(age) {
    this.age = 22;
}

Student.prototype = new Person();
let stu = new Student();
console.log(stu,'stu');

缺点:如果父类的原型对象上有一个属性 是引用类型的值,那么所有的实例都会共享这个引用类型,如果一个实例改变了该属性,其他实例的该属性都会被改变。

2.3 构造函数继承

function Person(name) {
    this.name = "lx"
}

function Student(age) {
    Person.call(this);
    this.age = 22;
}

let stu = new Student();
console.log(stu,'stu');

优点:原型属性不会被共享

缺点:不能继承父类prototype上的属性

2.4 组合继承(原型链继承+构造函数继承)

function Person(name) {
    this.name = "lx"
}

function Student(age) {
    Person.call(this);
    this.age = 22;
}

Student.prototype = new Person();
let stu = new Student();
console.log(stu,'stu');

优点:1. 原型属性不会被共享  2.可以继承父类的prototype的属性和方法 

缺点:1. 它调用了2次Parent()  2. 它在Child的prototype上添加了父类的属性和方法。

2.5 寄生组合继承(原型链继承+构造函数继承+组合继承)

function Person(name) {
    this.name = "lx"
}

function Student(age) {
    Person.call(this);
    this.age = 22;
}

Student.prototype = Object.create(Person.prototype);
let stu = new Student();
console.log(stu,'stu');

优点:1. 原型属性不会被共享 2. 可以继承父类的prototype的属性和方法 3. 调用1次Parent(),它不会再Child的prototype上添加父类的属性和方法。

缺点:Child的prototype上的原始属性和方法会丢失。

http://www.dtcms.com/a/127595.html

相关文章:

  • 基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究
  • 1. CEF 下载及wrapper编译
  • 第四篇:Python文件操作与异常处理
  • PromptUp 网站介绍:AI助力,轻松创作
  • daz dForce 模拟后布料的变化不大,如何增强模拟的效果
  • 2025.04.12【生物信息学新工具】| SPADE:高效聚类与降维分析的利器
  • dify报错 Expecting value: line 1 column 1 (char 0)
  • 计算轴承|滚动轴承故障频率
  • 消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)
  • 26考研——数据的表示和运算_运算方法和运算电路_定点数的加减运算 定点数的乘除运算(2)
  • 什么是原型、原型链?
  • Linux网络编程——数据链路层详解,以太网、MAC地址、MTU、ARP、DNS、NAT、代理服务器......
  • 屏幕模块解析
  • 数据分析-数据预处理
  • 【KWDB 创作者计划】第二卷:开发者实战篇
  • mysql 商城商品属性开发的动态解决方案
  • 个人博客系统后端 - 注册登录功能实现指南
  • 设计模式——工厂模式学习总结
  • 企业数据安全---数据分级
  • 【深度学习与大模型基础】第9章-条件概率以及条件概率的链式法则
  • Linux xorg-server 解析(二)- 如何调试 xorg-server
  • asm汇编字符串操作
  • 【NumPy科学计算:高性能数组操作核心指南】
  • a sort.py demo
  • 2024年React最新高频面试题及核心考点解析,涵盖基础、进阶和新特性,助你高效备战
  • Vue 接口请求 Nginx配置实时压缩 速度起飞
  • LVGL Arc控件和Roller控件详解
  • 【Java多线程】告别线程混乱!深度解析Java多线程4大实现方式(附实战案例)
  • Spring Boot 3.4.3 和 Spring Security 6.4.2 结合 JWT 实现用户登录
  • 青少年编程考试 CCF GESP图形化编程 四级认证真题 2025年3月