简介: 在JavaScript中,类(`Class`)是一种创建对象的模板,它可以用来定义对象的属性和方法。类是一种抽象的概念,它定义了对象的行为和状态,而对象则是类的一个具体实例。

22. 类

1. 类的定义

在JavaScript中,类(Class)是一种创建对象的模板,它可以用来定义对象的属性和方法。类是一种抽象的概念,它定义了对象的行为和状态,而对象则是类的一个具体实例。

JavaScript中的类是基于原型继承的,它们本质上是一种特殊的函数。类的定义使用class关键字,定义类的属性和方法使用类的原型对象上的方法。

与函数类型相似,定义类也有两种主要方式:类声明和类表达式。

// 类声明
class Person{
   }

// 类表达式
const Person = class {
   }

2. 类的构成

类可以包含构造函数方法、实例方法、获取函数、设置函数和静态类方法,但都不是必需的。

// 空类定义
class Person{
   }

// 有构造函数的类
class Person {
   
  constructor() {
   }
}

// 有实例方法的类
class Person {
   
  say() {
   }
}

// 有获取函数的类
class Person {
   
  get name() {
   }
}

// 有设置函数的类
class Person {
   
  set name(newName) {
   }
}

// 有静态方法的类
class Person {
   
  static myStatic() {
   }
}

3. 类的实例化

类的实例可以使用new关键字创建,并且实例化后可以使用类的属性和方法。

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

  sayName() {
   
    console.log("My name is "+this.name);
  }

  get names() {
   
    return this.name
  }

  // 定义在类本身上
  static myStatic() {
   
    return "Person's static"
  }
}

let p1 = new Person("Jack", 20)
let p2 = new Person("Marry", 18)
console.log(p1);//Person {name: 'Jack', age: 20}
console.log(p2);//Person {name: 'Marry', age: 18}
p1.sayName();//My name is Jack
console.log(p2.names);//Marry

console.log(p1.myStatic);//undefined
console.log(Person.myStatic());//Person's static

4. 类的继承

类可以使用继承来扩展其功能,子类可以继承父类的属性和方法,并可以添加自己的属性和方法。

// 类的继承
class Anyone extends Person{
   
  constructor(name, age, sex) {
   
    super(name, age)
    this.sex = sex;
  }

  saySex() {
   
    console.log(this.name +"'s sex is " + this.sex);
  }
}

let a1 = new Anyone("Bob", 16, "male")
a1.sayName();//My name is Bob
a1.saySex();//Bob's sex is male
相关文章
|
5月前
|
存储 安全 C#
C# 类的深入指南
C# 类的深入指南
|
6月前
|
传感器 存储 调度
PowerManagerService类大致解读
PowerManagerService类大致解读
95 1
|
6月前
|
C# 数据安全/隐私保护
56.c#:filelnfo类
56.c#:filelnfo类
48 2
|
6月前
|
算法 Java Serverless
JAVAMath类
JAVAMath类
33 0
|
6月前
|
Java 索引
JAVAStringBuilder类
JAVAStringBuilder类
30 0
|
6月前
|
Java
JAVAFile类
JAVAFile类
45 0
|
C++
浅谈C++类
浅谈C++类
88 0
|
编译器 数据安全/隐私保护
【C++Primer】第7章:类
【C++Primer】第7章:类
103 0
|
存储 Linux iOS开发
NSFileManager类
NSFileManager类
218 0
NSFileManager类
|
安全 编译器 数据安全/隐私保护
C++萌新来看,一篇文让你让你彻底搞定类(超详细)!
C++萌新来看,一篇文让你让你彻底搞定类(超详细)!
138 0
C++萌新来看,一篇文让你让你彻底搞定类(超详细)!