Javascript中类详解
创始人
2024-11-04 22:10:38
0

在JavaScript中,类(Class)是一种复合数据类型,它允许你通过原型链(prototype chain)来创建具有共享属性和方法的对象。下面是对类、构造器、类属性、类私有属性、方法、静态方法等内容的详细解释。

1. 类(Class)

类是一种蓝图或模板,用于创建对象。在ES6(ECMAScript 2015)及以后的版本中,JavaScript引入了类的语法,使得对象的创建更加清晰和易于管理。

class Person {     // 类体   }

2. 构造器(Constructor)

构造器是一个特殊的方法,用于在创建对象时初始化对象。在类中,构造器名为constructor。当使用new关键字创建类的实例时,会自动调用构造器。

class Person {     constructor(name, age) {       this.name = name;       this.age = age;     }   }      const person = new Person('Alice', 30);   console.log(person.name); // 输出: Alice   console.log(person.age); // 输出: 30

3. 类属性(Class Properties)

在ES2020(ES11)之前,类属性只能在构造器内部定义。但从ES2020开始,你可以在类体中直接定义属性。

class Person {     name = 'Unknown'; // 类属性        constructor(age) {       this.age = age;     }   }      const person = new Person(25);   console.log(person.name); // 输出: Unknown   console.log(person.age); // 输出: 25

4. 类私有属性(Class Private Fields)

私有属性是ES2020(ES11)中引入的一个新特性,允许你在类内部定义只能被类内部方法访问的属性。私有属性通过在属性名前加上#符号来标识。

class Person {     #name; // 私有属性        constructor(name, age) {       this.#name = name; // 只能在类内部访问和修改       this.age = age;     }        getName() {       return this.#name; // 可以在类的方法中访问     }   }      const person = new Person('Bob', 35);   console.log(person.getName()); // 输出: Bob   // console.log(person.#name); // 语法错误,外部无法访问私有属性

5. 方法(Methods)

方法是定义在类中的函数,用于执行特定的操作。它们可以访问和修改类的属性。

class Person {     constructor(name) {       this.name = name;     }        greet() {       console.log(`Hello, my name is ${this.name}!`);     }   }      const person = new Person('Charlie');   person.greet(); // 输出: Hello, my name is Charlie!

6. 静态方法(Static Methods)

静态方法是定义在类上而不是类的实例上的方法。它们通过类本身来调用,而不是类的实例。静态方法不能访问类的实例属性,但可以访问其他静态属性和方法。

class MathUtils {     static sum(a, b) {       return a + b;     }   }      console.log(MathUtils.sum(2, 3)); // 输出: 5   // 注意:静态方法不能通过类的实例来调用   // const utils = new MathUtils();   // console.log(utils.sum(2, 3)); // 这将不会工作,因为sum是静态的

7. this 关键字

在类中,this关键字用于引用当前对象的实例。在构造器、方法或计算属性中,this指向调用它们的对象实例。

class Person {     constructor(name) {       this.name = name; // this指向新创建的Person实例     }        greet() {       console.log(`Hello, my name is ${this.name}!`); // this指向调用greet方法的Person实例     }   }      const person = new Person('Charlie');   person.greet(); // 输出: Hello, my name is Charlie!

总结

  • 类是创建对象的蓝图。
  • 构造器用于初始化新创建的对象。
  • 类属性可以是公开的或私有的。
  • 私有属性通过#符号标识,只能在类内部访问。
  • 方法是定义在类中的函数,可以访问和修改类的属性。
  • 静态方法定义在类上,通过类本身调用,不能访问类的实例属性。
  • this关键字在类中用于引用当前对象的实例。

相关内容

热门资讯

推荐一款!牛牛房卡哪里有卖的海... 推荐一款!牛牛房卡哪里有卖的海航大厅/微信链接房间卡怎么购买海航大厅是一款非常受欢迎的游戏,咨询房/...
ia实测“在哪里买炸金花房卡哪... 随意玩是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享...
我来教你/牛牛房卡代理新超圣/... 微信游戏中心:新超圣房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程序...
秒懂教程!拼三张房卡如何购买,... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
IA解析/金花房卡代理零售天启... 天启联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
一分钟了解“微信群链接牛牛买房... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
正规平台有哪些,牛牛房卡制作链... 今 日消息,乐酷大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
秒懂教程!拼三张房卡如何购买,... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
ia实测“如何在微信上购买金花... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
正规平台有哪些,金花房间怎么创... 流樱大厅/新道游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
秒懂教程!微信炸金花房卡哪里有... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
我来教你/牛牛房卡怎么获得乐酷... 您好!微信乐酷大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(乐酷大厅)大厅介绍:...
一分钟了解“买房卡的金花房代理... 海贝之城是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
我来教你/牛牛房卡官网玫瑰大厅... 我来教你/牛牛房卡官网玫瑰大厅/房卡链接怎么获取玫瑰大厅是一款非常受欢迎的游戏,咨询房/卡添加微信:...
科技实测!金花房卡批发价荣耀乐... 微信游戏中心:荣耀乐娱房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
一分钟推荐“创建金花房间链接教... 神皇大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
头条推荐!如何购买金花房卡皇豪... 皇豪互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
秒懂教程!拼三张房卡链接在哪弄... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
重大通报,牛牛房卡哪里有卖的新... 今 日消息,新道游/皇豪互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
正版授权!牛牛房卡出售江山大厅... 江山大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...