带你读《现代Javascript高级教程》十三、面向对象编程与Class(3)

简介: 带你读《现代Javascript高级教程》十三、面向对象编程与Class(3)

带你读《现代Javascript高级教程》十三、面向对象编程与Class(2)https://developer.aliyun.com/article/1349608?groupCode=tech_library


5. Getter和Setter方法

GetterSetter方法用于对类的属性进行读取和设置操作,可以通过类似访问属性的语法进行调用。

 

class Circle {
  constructor(radius) {
    this.radius = radius;
  }
  get diameter() {
    return 2 * this.radius;
  }
  set diameter(value) {
    this.radius = value / 2;
  }}

在上述示例中,我们定义了一个Circle类,它具有一个属性radius。通过定义get diameter()方法和set diameter()方法,我们可以通过类似访问属性的方式来读取和设置直径(diameter)属性,而不需要直接访问radius属性。

 

const circle = new Circle(5);
console.log(circle.diameter);     //

 

输出:10

 

circle.diameter = 12;
console.log(circle.radius);       // 输出:6

6. 类的私有属性和方法

在ES6中,可以使用#作为前缀来定义私有属性和方法。私有属性和方法只能在类的内部被访问,外部无法访问。

class Person {
  name;   // 私有属性
  constructor(name) {
    this.name = name;
  }
  privateMethod() {   // 私有方法
    console.log('This is a private method');
  }
  publicMethod() {      // 公共方法
    console.log(`Hello, my name is ${this.name}`);
    this.privateMethod();
  }}

 

在上述示例中,我们定义了一个Person类,它具有一个私有属性name和一个私有方法privateMethod()。私有属性和方法只能在类的内部访问。

const person = new Person('John');
person.publicMethod();   // 输出:Hello, my name is John
person.name;            // 报错:SyntaxError: Private field 'name' must be declared in an enclosing class
person.privateMethod(); // 报错:SyntaxError: Private field 'privateMethod' must be declared in an enclosing class

7. 类的实例和构造函数

在ES6中,类的实例通过new关键字进行创建,并自动调用类的构造函数进行初始化。

 

const rect = new Rectangle(5, 3);
console.log(rect.area());       // 输出:15
console.log(rect.perimeter());  // 输出:16

 

可以使用instanceof运算符来判断一个对象是否是某个类的实例。

 

console.log(rect instanceof Rectangle);  // 输出:true
console.log(rect instanceof Object);     // 输出:true

8. 类的继承

继承是面向对象编程中的重要概念之一,它允许我们创建一个基类(父类),其他类可以继承该基类并扩展或覆盖其中的属性和方法。ES6中使用extends关键字实现类的继承。

 

class Square extends Rectangle {
  constructor(side) {
    super(side, side);    // 调用父类的构造函数
  }}


带你读《现代Javascript高级教程》十三、面向对象编程与Class(4)

 https://developer.aliyun.com/article/1349604?groupCode=tech_library

相关文章
|
9天前
|
Web App开发 JavaScript 前端开发
JavaScript 类(class)
JavaScript 类(class)
14 2
JavaScript 类(class)
|
3月前
|
JavaScript
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
148 0
|
7天前
|
JavaScript 前端开发
js之class继承|27
js之class继承|27
|
7天前
|
JavaScript 前端开发 Java
js面向对象编程|24
js面向对象编程|24
|
2月前
|
JavaScript NoSQL 前端开发
|
3月前
|
JSON JavaScript 数据格式
vue 绘制波形图 wavesurfer.js (音频/视频) 【实用教程】
vue 绘制波形图 wavesurfer.js (音频/视频) 【实用教程】
303 3
|
3月前
|
JavaScript
JS 自测题 —— 手写 class
JS 自测题 —— 手写 class
20 0
|
3月前
|
JavaScript
vue 农历日期转公历日期(含插件 js-calendar-converter 使用教程)
vue 农历日期转公历日期(含插件 js-calendar-converter 使用教程)
182 0
|
3月前
|
开发框架 监控 JavaScript
企业级node.js开发框架 【egg.js】 实用教程
企业级node.js开发框架 【egg.js】 实用教程
40 0
|
3月前
命令行加载特效 【cli-spinner.js】 实用教程
命令行加载特效 【cli-spinner.js】 实用教程
26 0
下一篇
无影云桌面