当我们需要在 JavaScript 中对一个对象的某个属性进行访问控制时,可以使用 getter 和 setter 方法。getter 方法用于获取属性的值,setter 方法用于设置属性的值。本文将详细介绍如何使用 getter 和 setter 方法。
语法
var obj = {
get 属性名() {
// 代码块
},
set 属性名(value) {
// 代码块
}
};
实例分析
以下是两个使用 getter 和 setter 的实例:
实例1: 计算圆的面积
下面的示例演示了如何使用 getter 和 setter 方法计算圆的面积:
class Circle {
constructor(radius) {
this.radius = radius;
}
get area() {
return Math.PI * this.radius * this.radius;
}
set area(value) {
this.radius = Math.sqrt(value / Math.PI);
}
}
const circle = new Circle(5);
console.log(circle.area); // 输出 78.53981633974483
circle.area = 50;
console.log(circle.radius); // 输出 4.003565971242787
在上述代码中,我们定义了一个 Circle 类,该类的构造函数接收一个半径参数,使用 radius 属性存储半径值,定义了一个 getter 方法 area,该方法用于计算圆的面积。例如,circle.area 将返回圆的面积。定义了一个 setter 方法 area,该方法使用面积计算半径,并将结果存储在 radius 属性中。
实例2: 验证输入数据
下面的示例演示了如何使用 getter 和 setter 方法验证输入数据是否合法:
class User {
constructor(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
get fullName() {
return `${this.firstName} ${this.lastName}`;
}
set age(value) {
if (value < 0 || value > 120) {
console.log("Invalid input");
return;
}
this._age = value;
}
get age() {
return this._age;
}
}
const user = new User("John", "Doe", 200);
console.log(user.fullName); // 输出 "John Doe"
console.log(user.age); // 输出 "Invalid input"
在上述代码中,我们定义了一个 User 类,该类的构造函数接收 firstName、lastName 和 age 参数,使用这些参数创建并初始化实例属性。定义了一个 getter 方法 fullName,该方法用于返回用户的全名。定义了一个 setter 方法 age,该方法在设置用户年龄时验证输入数据是否合法。如果输入数据无效,将在控制台输出一条错误消息。
结论
使用 getter 和 setter 方法可以帮助我们轻松实现属性的访问控制,例如对属性值进行逻辑校验、计算等操作。此外,getter 和 setter 方法还可以用于模拟实例属性,让我们可以直接访问实例属性的同时进行其他操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中getter和setter用法实例分析 - Python技术站