推荐答案
-- -------------------- ---- ------- ----- ------ - ---------------------- --------- - --------------- - ---------- -------------- - --------- - -- ------ --- ---- ---- --- ---------- - ------ ------------------- ------------------- - -- ------ --- ---- ---- --- -------------- - ----- ----------- --------- - ------------ --- --------------- - ---------- -------------- - --------- - - ----- ------ - --- -------------- ------- ----------------------------- -- ------- ---- --- --------------- - ----- ------- ----------------------------- -- ------- ---- -----
本题详细解读
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
。