JavaScript 中 ES6

在ES6(ECMAScript 2015)中,JavaScript引入了一些新的语法和特性来支持面向对象编程(OOP)。下面是对ES6中面向对象编程的详细解释:

  1. 类(Class): ES6引入了类的概念,使得面向对象编程更加直观和易用。类是对象的蓝图,用于定义对象的属性和方法。

    class Person {
      constructor(name) {
        this.name = name;
      }
    
      sayHello() {
        console.log(`Hello, my name is ${this.name}.`);
      }
    }
    
    let person = new Person("John");
    person.sayHello();  // 输出:Hello, my name is John.
    
  2. 构造函数(Constructor): 类中的构造函数通过 constructor 关键字定义。它在创建类的实例时被调用,并用于初始化对象的状态。

    class Person {
      constructor(name) {
        this.name = name;
      }
    }
    
    let person = new Person("John");
    console.log(person.name);  // 输出:John
    
  3. 继承(Inheritance): ES6引入了 extends 关键字,使得类可以继承另一个类的属性和方法。子类可以通过继承获得父类的特性,并且可以扩展或重写它们。

    class Animal {
      constructor(name) {
        this.name = name;
      }
    
      speak() {
        console.log(`${this.name} makes a sound.`);
      }
    }
    
    class Dog extends Animal {
      speak() {
        console.log(`${this.name} barks.`);
      }
    }
    
    let dog = new Dog("Buddy");
    dog.speak();  // 输出:Buddy barks.
    
  4. 静态方法(Static Methods): 静态方法属于类本身,而不是类的实例。它们可以通过类名直接调用,无需创建对象实例。

    class MathUtils {
      static add(a, b) {
        return a + b;
      }
    }
    
    console.log(MathUtils.add(2, 3));  // 输出:5
    
  5. Getter 和 Setter: ES6引入了 getset 关键字,用于定义访问对象属性的特殊方法。get 用于获取属性值,set 用于设置属性值。

    class Circle {
      constructor(radius) {
        this.radius = radius;
      }
    
      get diameter() {
        return this.radius * 2;
      }
    
      set diameter(diameter) {
        this.radius = diameter / 2;
      }
    }
    
    let circle = new Circle(5);
    console.log(circle.diameter);  // 输出:10
    circle.diameter = 14;
    console.log(circle.radius);  // 输出:7
    
  6. 箭头函数(Arrow Functions): 箭头函数是ES6中的一种新的函数语法,它具有更简洁的语法形式和词法作用域绑定。箭头函数通常用于定义类方法和回调函数。

    class Timer {
      constructor() {
        this.seconds = 0;
      }
    
      start() {
        setInterval(() => {
          this.seconds++;
          console.log(`Timer: ${this.seconds} seconds.`);
        }, 1000);
      }
    }
    
    let timer = new Timer();
    timer.start();  // 每秒输出计时器的秒数
    

ES6的面向对象编程引入了类、构造函数、继承、静态方法、Getter和Setter等特性,使得JavaScript更加适合大型应用程序和复杂的代码组织。这些新的语法和特性提供了更清晰、更模块化的代码结构,使得面向对象编程更加直观和易于理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据污染对大型语言模型的潜在影响

大型语言模型(LLMs)中存在的数据污染是一个重要问题,可能会影响它们在各种任务中的表现。这指的是LLMs的训练数据中包含了来自下游任务的测试数据。解决数据污染问题至关重要,因为它可能导致结果偏倚,并影响LLMs在其他…

linux 中 make 和 gmake的关系

1. 关系 gmake特指GNU make。 make是指系统默认的make实现; 在大多数Linux发行版中,make就是GNU make,但是在其他unix中,gmake可以指代make的某些其他实现,例如BSD make或各种商业unix的make实现。 gmake是GNU Make的缩写。 Linux…

【基础C-递归的易错思路】

目录 1. 分析2. 代码3. 结果: 1. 分析 现在要写一个小程序,实现输入整型:4268,输出字符:‘4’,‘2’,‘6’,‘8’,思路很简单,就是进行整数的除10,结果对10求模就行,但是得到的值是逆序排列&…

Vue 组件分类、局部注册和全局注册

文章目录 背景知识组件分类安装 vue-cli示例设置组件局部注册设置组件全局注册 背景知识 开发 Vue 的两种方式: 核心包传统开发模式:基于 html / css / js 文件,直接引入核心包,开发 Vue。工程化开发模式:基于构建工…

[c++]菱形继承解析

菱形继承 大概示意图: 菱形继承不一定只是标准的菱形,只要形似菱形的都可以叫菱形继承。 (以下说明都是默认公有继承,public和protected成员情况下) 菱形继承会造成数据的冗余和二义性: 冗余:一个Assitant对象里面有…

[C++基础学习]----03-程序流程结构之循环结构详解

前言 在C程序中,循环结构在用于重复执行一段代码块,直到满足某个条件为止。循环结构有多种形式,包括while循环、do-while循环和for循环。 正文 01-循环结构简介 1、while循环语句: while循环在每次循环开始前检查条件是否为真&a…

数据库锁介绍

数据库锁是一种同步机制,用于控制多个事务对共享资源的访问,防止并发操作造成的数据不一致。在数据库中,锁通常分为两种基本类型:排他锁(Exclusive Locks)和共享锁(Shared Locks)。排…

大型语言模型高效推理综述

论文地址:2404.14294.pdf (arxiv.org) 大型语言模型(LLMs)由于在各种任务中的卓越表现而受到广泛关注。然而,LLM推理的大量计算和内存需求给资源受限的部署场景带来了挑战。该领域的努力已经朝着开发旨在提高LLM推理效率的技术方…

【C++】namespace、class、struct的区别

文章目录 命名空间定义命名空间using指令不连续的命名空间嵌套的命名空间多文件编程时的命名空间命名空间只能全局范围内定义命名空间中的函数 可以在“命名空间”外 定义无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可…

【Hadoop】-Apache Hive使用语法与概念原理[15]

一、数据库操作 创建数据库 create database if not exists myhive; 使用数据库 use myhive; 查看数据库详细信息 desc database myhive; 数据库本质上就是在HDFS之上的文件夹。 默认数据库的存放路径是HDFS的:/user/hive/warehouse内 创建数据库并指定hdfs…

redis7 for windows的安装教程

本篇博客主要介绍redis7的windows版本下的安装教程 1.redis介绍 Redis(Remote Dictionary Server)是一个开源的,基于内存的数据结构存储系统,可用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希表、列…

PCIe debug设计:锁存ltssm 状态机

图1:debug设计添加位置 图2:ltssm状态切换图 LTSSM state: LTSSM state encoding: • 00h: detect.quiet • 01h: detect.active • 02h: polling.active • 03h: polling.compliance • 04h: polling.configuration • 05h: config.linkwidthstart • 0…

鸿蒙内核源码分析(时钟任务篇)

时钟概念 时间是非常重要的概念,我们整个学生阶段有个东西很重要,就是校园铃声. 它控制着上课,下课,吃饭,睡觉的节奏.没有它学校的管理就乱套了,老师拖课想拖多久就多久,那可不行,下课铃声一响就是在告诉老师时间到了,该停止了让学生HAPPY去了. 操作系统也一样&…

linux进程通信 ipc

进程通信 管道 父子进程创建命令 实现ls | wc -l 左边写端 ,右边读端 父进程写 子进程读 int fd[2]; pipe(fd); fd[1] 是写 fd[0]是读 读之前关闭写 写之前关闭读 兄弟进程创建命令 无法进行管道通信可能是父进程也把握了读端和写端 可能会流入到父进程…

抓包理解协议

用的Wireshark 抓包 1.抓包网卡选择 - WLAN 无线网卡,其他是本地虚拟机的网卡 这里分别是开始捕获、停止捕获、重新捕获、网卡选择,下面是可以过滤选择 过滤tcp包 3次握手: source是源地址, destination是目标地址,in…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-5

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

嵌入式学习58-ARM7(字符设备驱动框架led)

知识零碎: kernel 内核 printk 内核打印 cat /proc/devices insmod …

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈

VMWARE安装xpsp3时无法从光盘启动安装显示dhcp转圈圈。之前都安装过无数次了。这次被卡住了。 原来是这里原因 不成功是因为启动时连接没打钩。默认是打钩的。不知道怎么的我把勾去掉了。我还跑去设置bios。都没有用。

开放地址法解决哈希冲突

1.基本思想: 有冲突时就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将元素存入. 2.开放地址法的常用方法: (1) 线性探测法: Hi(Hash(key)di)%m (1<i<m),其中:m为哈希表长度,di为增量序列1,2,……m-1,且dii;其实就是一旦有冲突,就找下一个空地…

【Spring MVC】_SpringMVC项目返回静态页面

目录 1. 创建与设计前端页面 2. 返回HTML静态页面 2.1 示例1&#xff1a;使用RestController 2.2 示例2&#xff1a;使用Controller 3. RestController与Controller 在本专栏关于SpringMVC项目的相关文章中&#xff0c;已经介绍了操作HTTP请求的方式&#xff0c;包括多种传…
最新文章