带你读《现代Javascript高级教程》十三、面向对象编程与Class(2)https://developer.aliyun.com/article/1349608?groupCode=tech_library
5. Getter和Setter方法
Getter和Setter方法用于对类的属性进行读取和设置操作,可以通过类似访问属性的语法进行调用。
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