推荐答案
// www.javascriptcn.com code example
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// Getter for full name
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// Setter for full name
set fullName(name) {
const [firstName, lastName] = name.split(' ');
this._firstName = firstName;
this._lastName = lastName;
}
}
const person = new Person('John', 'Doe');
console.log(person.fullName); // Output: John Doe
person.fullName = 'Jane Smith';
console.log(person.fullName); // Output: Jane Smith本题详细解读
1. 类的定义
在 JavaScript 中,类是通过 class 关键字定义的。类可以包含构造函数、方法、getter 和 setter。
2. 构造函数
构造函数 constructor 是类的特殊方法,用于初始化对象的属性。在 Person 类中,构造函数接受 firstName 和 lastName 作为参数,并将它们赋值给实例的私有属性 _firstName 和 _lastName。
3. Getter
Getter 是一种特殊的方法,用于获取对象的属性值。在 Person 类中,fullName 是一个 getter,它返回 _firstName 和 _lastName 的组合。
get fullName() {
return `${this._firstName} ${this._lastName}`;
}4. Setter
Setter 是一种特殊的方法,用于设置对象的属性值。在 Person 类中,fullName 是一个 setter,它接受一个字符串参数 name,并将其拆分为 firstName 和 lastName,然后分别赋值给 _firstName 和 _lastName。
set fullName(name) {
const [firstName, lastName] = name.split(' ');
this._firstName = firstName;
this._lastName = lastName;
}5. 使用 Getter 和 Setter
通过 getter 和 setter,可以像访问普通属性一样访问和修改 fullName。例如:
const person = new Person('John', 'Doe');
console.log(person.fullName); // Output: John Doe
person.fullName = 'Jane Smith';
console.log(person.fullName); // Output: Jane Smith在这个例子中,person.fullName 首先通过 getter 返回 John Doe,然后通过 setter 修改为 Jane Smith,最后再次通过 getter 返回 Jane Smith。