简介: 在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
相关文章
|
2月前
|
存储 SQL 数据库连接
ConnectionProxy类
ConnectionProxy类的主要作用是用于代理真实的Conection(数据库连接类)。之所以要额外构建一个代理类,是因为我们需要对连接进行连接超时检查,也就是健康检查功能,所以我们需要额外一个类型为long的属性来存储连接被取出时的时间。另一个重要的原因是,对于Connection中的一些接口我们并不希望显式的暴露给外部去使用。就比如说Connection中的close方法,就不能显式的暴露给外部使用,因为Connection在连接池中需要被重复使用,我们希望关闭连接的操作是有连接池来负责。在ConnectionProxy中,需要代理Connection中的一些必要的方法。这个可以看具
|
7月前
abject类的使用(11.4)
abject类的使用(11.4)
|
7月前
|
存储 安全 C#
C# 类的深入指南
C# 类的深入指南
|
8月前
|
C# 数据安全/隐私保护
56.c#:filelnfo类
56.c#:filelnfo类
67 2
|
分布式数据库
|
安全 C++
C++类的初识
C++类的初识
116 0
|
编译器 数据安全/隐私保护
【C++Primer】第7章:类
【C++Primer】第7章:类
109 0
|
存储 Linux iOS开发
NSFileManager类
NSFileManager类
236 0
NSFileManager类
|
安全 编译器 数据安全/隐私保护
C++萌新来看,一篇文让你让你彻底搞定类(超详细)!
C++萌新来看,一篇文让你让你彻底搞定类(超详细)!
147 0
C++萌新来看,一篇文让你让你彻底搞定类(超详细)!

热门文章

最新文章