JavaScript 中的 Getters 和 Setters 是用于访问和设置对象属性的特殊方法。它们允许您在属性访问时执行自定义代码。
Getters
Getters 是一种函数,用于获取对象的属性值。它们以 get 关键字开头,后跟一个空格和属性名称。以下是一个例子:
const person = {
firstName: "John",
lastName: "Doe",
get fullName() {
return `${this.firstName} ${this.lastName}`;
}
};
console.log(person.fullName); // "John Doe"
在上面的例子中定义了一个名为 fullName 的 getter。当 person.fullName 被调用时,getter 函数会执行并返回 firstName 和 lastName 的值。
Setters
Setters 是一种函数,用于设置对象的属性值。它们以 set 关键字开头,后跟一个空格和属性名称。以下是一个例子:
const person = {
firstName: "John",
lastName: "Doe",
set fullName(name) {
const names = name.split(" ");
this.firstName = names[0];
this.lastName = names[1];
}
};
person.fullName = "Jane Smith";
console.log(person.firstName); // "Jane"
console.log(person.lastName); // "Smith"
在上面的例子中定义了一个名为 fullName 的 setter。当 person.fullName 被设置时,setter 函数会执行并将 firstName 和 lastName 的值设置为传递给它的字符串中的第一个和第二个单词。
Getters 和 Setters 的用途
Getters 和 Setters 可以帮助我们在访问和设置对象属性时进行验证和转换。以下是一个例子:
class Temperature {
constructor(celsius) {
this.celsius = celsius;
}
get fahrenheit() {
return (this.celsius * 1.8) + 32;
}
set fahrenheit(value) {
this.celsius = (value - 32) / 1.8;
}
}
const temp = new Temperature(30);
console.log(temp.fahrenheit); // 86
temp.fahrenheit = 68;
console.log(temp.celsius); // 20