首页 > 其他分享 >JS中【class】知识点详解

JS中【class】知识点详解

时间:2024-08-10 12:59:00浏览次数:13  
标签:知识点 console name age JS speed class log

JavaScript 中的 class 是一种语法糖,用于简化创建和管理对象的原型链和继承。虽然 JavaScript 的核心依然是基于原型继承的,但 class 语法让面向对象编程风格更加直观和易于使用。

1. 定义类

使用 class 关键字可以定义一个类。类通常包含构造函数和方法。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  // 定义一个方法
  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

2. 实例化类

使用 new 关键字来实例化类。

const person1 = new Person('Alice', 30);
person1.greet();  // 输出: Hello, my name is Alice and I am 30 years old.

3. 类的继承

使用 extends 关键字可以实现类的继承。

class Student extends Person {
  constructor(name, age, grade) {
    super(name, age);  // 调用父类的构造函数
    this.grade = grade;
  }

  study() {
    console.log(`${this.name} is studying in grade ${this.grade}.`);
  }
}

const student1 = new Student('Bob', 20, 'A');
student1.greet();  // 输出: Hello, my name is Bob and I am 20 years old.
student1.study();  // 输出: Bob is studying in grade A.

4. 静态方法

使用 static 关键字定义静态方法,静态方法不需要实例化类即可调用。

class MathHelper {
  static add(x, y) {
    return x + y;
  }
}

console.log(MathHelper.add(2, 3));  // 输出: 5

5. 私有字段与方法

在较新的 JavaScript 版本中,# 用于定义类的私有字段和方法。它们只能在类的内部访问,外部无法直接访问。

class Car {
  #speed = 0;

  accelerate(amount) {
    this.#speed += amount;
    console.log(`The car is now going ${this.#speed} mph.`);
  }

  #brake(amount) {
    this.#speed -= amount;
    if (this.#speed < 0) this.#speed = 0;
    console.log(`The car is now going ${this.#speed} mph.`);
  }
}

const car1 = new Car();
car1.accelerate(50);
// car1.#brake(20); // 会报错,因为 #brake 是私有方法

6. 类的实例和原型

每个类都有一个关联的原型对象,它定义了该类实例的方法和属性。通过 Object.getPrototypeOf 可以获取实例的原型对象。

console.log(Object.getPrototypeOf(person1) === Person.prototype);  // 输出: true

7. 类表达式

类也可以通过表达式定义,并且可以是匿名的。

const Animal = class {
  constructor(type) {
    this.type = type;
  }

  makeSound() {
    console.log(`${this.type} makes a sound.`);
  }
};

const dog = new Animal('Dog');
dog.makeSound();  // 输出: Dog makes a sound.

8. 类的语法与传统函数构造

虽然 class 语法看起来与传统的函数构造不同,但两者在底层实现上有很大的相似之处。class 本质上是语法糖,它简化了用构造函数和原型链来创建对象和处理继承的过程。

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};

const person2 = new Person('Charlie', 25);
person2.greet();  // 输出: Hello, my name is Charlie and I am 25 years old.

总结来说,JavaScript 的 class 提供了一个更简洁、更具表达力的方式来定义对象的行为和结构,同时也支持面向对象编程的常见特性如继承、封装和多态。

标签:知识点,console,name,age,JS,speed,class,log
From: https://blog.csdn.net/2301_79858914/article/details/141089200

相关文章

  • 【精品毕设推荐】基于SSM+jsp的会员管理系统设计与实现
    点击下载原文及代码,可辅助在本地配置运行摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于会员管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了会员管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低......
  • 【精品毕设推荐】基于SSM+jsp的公司员工信息管理系统设计与实现
    点击下载原文及代码,可辅助在本地配置运行摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本龙腾公司员工信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信......
  • 425.响应式的境外旅游私人订制网站 大学生期末大作业 Web前端网页制作 html+css+js
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有Web前端网页制作的各行各业的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这......
  • Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持
    就在昨晚,SpringAI发了个比较重要的更新。由于最近OpenAI推出了结构化输出的功能,可确保AI生成的响应严格遵守预定义的JSON模式。此功能显着提高了人工智能生成内容在现实应用中的可靠性和可用性。SpringAI紧随其后,现在也可以对OpenAI的结构化输出完美支持了。下图展示了本......
  • Got an error when I tried to use the Openai SDK in Node.js
    题意:尝试在Node.js中使用OpenAISDK时遇到错误问题背景:IamtryingtouseOpenaiapiwithnodejs,IfollowthetutorialandwanttoaddasimplegpttextcompletionfeautureusingtheopenaiSDK,butIgotanerrorsays:/node_modules/openai/core.js:44con......
  • Javascript(turfjs)等值线图绘制
    Javascript(turfjs)等值线图绘制舍瓦温 2020-04-07阅读 5 分钟14 使用气象、环境类空间数据绘制等值线通常是由NCL、Python来做,在一些场景中:你只是想在WEB端做一些简单的绘制你的后端只有Node.js环境你纯粹是个前端工程师你也许需要......
  • 高德地图 JS API2.0(入门级使用教程)
    高德地图JSAPI2.0入门使用教程准备工作注册高德地图开发者账号进入高德开放平台首页使用手机号注册,然后完成身份认证。创建应用[应用管理]-->[创建新的应用]–>[填写应用名称以及应用类型]-->[添加],然后获取到安全密钥和key即可。过程如下图:阅读参考文档......
  • JS中原型相关的十个知识点总结
    JavaScript中的原型(Prototype)是理解对象和继承机制的核心概念。以下是我对JavaScript原型相关知识点的总结和详细讲解:1.原型对象(PrototypeObject)在JavaScript中,每个对象都有一个关联的对象,这个关联的对象称为“原型”。当你尝试访问一个对象的属性时,如果该对象本身......
  • CORS与JSONP漏洞原理及其复现
    文章目录CORS跨域共享介绍同源策略配置产生条件复现自动化爆破工具JSONP跨域回调介绍复现自动审查工具安装教程使用教程在现代Web开发中,跨域资源共享(CORS)和JSONP是两种重要的跨域通信技术。CORS通过设置HTTP头来控制资源共享,而JSONP则利用了本文将深入探讨......
  • 【C++】模板(相关知识点讲解 + STL底层涉及的模板应用)
    目录模板是什么?模板格式模板本质函数模板格式介绍显式实例化模板参数匹配原则类模板类模板的实例化非类型模板参数模板特化——概念函数模板特化类模板的特化全特化半特化偏特化三种类特化例子(放一起比较)模板分离编译STL中比较经典的模板应用(不包含argus)......