JavaScript Class的正确使用方法详解

 更新时间:2025年03月23日 09:42:43   作者:烛阴  
在JavaScript中,类是通过class关键字来定义的,它的本质是一种语法糖,仍然是基于原型链的,class 内部的属性和方法最终都会添加到构造函数的 prototype 属性上,本文给大家介绍了JavaScript Class的正确打开方式,需要的朋友可以参考下

一、什么是 Class?

类是构造对象的蓝图,它定义了对象的属性和方法。在JavaScript中,类是通过class关键字来定义的,它的本质是一种语法糖,仍然是基于原型链的,class 内部的属性和方法最终都会添加到构造函数的 prototype 属性上。class 关键字提供了一种更清晰、更结构化的方式来定义对象和它们之间的关系。

二、Class 的基本语法:

class Person {
  // 构造函数
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

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

  // 静态方法
  static greet() {
    console.log("Hello!");
  }
}

// 创建实例
let person1 = new Person("Alice", 30);
person1.sayHello(); // 输出 "Hello, my name is Alice and I am 30 years old."

// 调用静态方法
Person.greet(); // 输出 "Hello!"

Class 的组成部分:

  • constructor 构造函数,用于创建和初始化对象。如果没有显式定义 constructor,JavaScript 会自动创建一个默认的构造函数。
  • 方法: 定义在 class 内部的函数,用于描述对象的行为。
  • 静态方法: 使用 static 关键字定义的方法,属于类本身,而不是类的实例。可以通过类名直接调用静态方法。

三、Class 的继承:

使用 extends 关键字可以实现类的继承。子类可以继承父类的属性和方法,并可以添加自己的属性和方法。

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

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

  // 重写父类的方法
  sayHello() {
    console.log(`Hello, my name is ${this.name}, I am ${this.age} years old, and I am studying ${this.major}.`);
  }
}

let student1 = new Student("Bob", 20, "Computer Science");
student1.sayHello(); // 输出 "Hello, my name is Bob, I am 20 years old, and I am studying Computer Science."
student1.study(); // 输出 "Bob is studying Computer Science."

继承的关键点:

  • extends 用于指定父类。
  • super() 用于调用父类的构造函数。必须在子类的构造函数中调用 super(),才能正确初始化父类的属性。
  • 方法重写 (Override): 子类可以定义与父类同名的方法,从而覆盖父类的方法。

四、Getter 和 Setter:

可以使用 getset 关键字定义属性的 getter 和 setter 方法,从而控制属性的访问和修改。

class Circle {
  constructor(radius) {
    this._radius = radius; // 使用 _radius 作为内部属性
  }

  get radius() {
    return this._radius;
  }

  set radius(value) {
    if (value <= 0) {
      throw new Error("Radius must be positive.");
    }
    this._radius = value;
  }

  get area() {
    return Math.PI * this._radius * this._radius;
  }
}

let circle1 = new Circle(5);
console.log(circle1.radius); // 输出 5
console.log(circle1.area); // 输出 78.53981633974483

circle1.radius = 10;
console.log(circle1.radius); // 输出 10
console.log(circle1.area); // 输出 314.1592653589793

// circle1.radius = -1; // 抛出错误 "Radius must be positive."

五、静态属性:

可以使用 static 关键字定义静态属性,静态属性属于类本身,而不是类的实例。

class Counter {
  static count = 0;

  constructor() {
    Counter.count++;
  }

  static getCount() {
    return Counter.count;
  }
}

let counter1 = new Counter();
let counter2 = new Counter();
console.log(Counter.getCount()); // 输出 2

到此这篇关于JavaScript Class的正确使用方法详解的文章就介绍到这了,更多相关JavaScript Class用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript中的this关键字用法详解

    JavaScript中的this关键字用法详解

    在编写JavaScript应用的时候,我们经常会使用this关键字。那么this关键字究竟是怎样工作的,它的设计有哪些好的地方,有哪些不好的地方,本文带大家全面系统地认识这个老朋友,感兴趣的小伙伴可以借鉴阅读
    2023-05-05
  • 使用typeof方法判断undefined类型

    使用typeof方法判断undefined类型

    使用typeof方法,typeof 返回的是字符串,其中就有一个是undefined,下面是示例代码,大家可以看看
    2014-09-09
  • 微信小程序在Tab的icon上显示消息数量的方法

    微信小程序在Tab的icon上显示消息数量的方法

    这篇文章主要介绍了微信小程序在Tab的icon上显示消息数量的方法,首先,在app.json文件中,找到对应的tabBar配置,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 使用JavaScript实现一个拖拽缩放效果

    使用JavaScript实现一个拖拽缩放效果

    这篇文章主要介绍了如何使用JS实现一个这样的拖拽缩放效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 小程序实现左右来回滚动字幕效果

    小程序实现左右来回滚动字幕效果

    这篇文章主要为大家详细介绍了小程序实现左右来回滚动字幕效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • JS实现的在线调色板实例(附demo源码下载)

    JS实现的在线调色板实例(附demo源码下载)

    这篇文章主要介绍了JS实现的在线调色板,可实现响应鼠标点击动态改变调色板颜色的功能,涉及JavaScript针对页面元素属性的动态操作与计算技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2016-03-03
  • Bootstrap导航条学习使用(一)

    Bootstrap导航条学习使用(一)

    这篇文章主要为大家详细介绍了Bootstrap导航条的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • JS 毫秒转时间示例代码

    JS 毫秒转时间示例代码

    毫秒转时间的方法有很多,在本文将为大家介绍下js中是如何实现的,感兴趣的朋友可以参考下
    2013-09-09
  • 判断控件是否已加载完成的代码

    判断控件是否已加载完成的代码

    判断一个控件是否已加载完成其实很简单,就是利用浏览器的解析顺序。通俗的说,代码的位置越靠前,就越先加载。
    2010-02-02
  • clipboard.js在移动端复制失败的解决方法

    clipboard.js在移动端复制失败的解决方法

    最近在使用clipboard.js碰到的一个小问题,通过查找相关资料解决了,所以下面这篇文章主要给大家介绍了关于clipboard.js在移动端复制失败的解决方法,需要的朋友可以参考借鉴,下面来一起学习学习吧
    2018-06-06

最新评论