在JavaScript中,`get` 和 `set` 是用于对象属性上的访问器属性(Accessor Properties)的特殊方法。它们允许你在读取或设置属性值时执行代码。这是一个简单的示例,展示了如何使用 `get` 和 `set`:
const person = {
firstName: "John",
lastName: "Doe",
// 使用get定义属性fullName的读取行为
get fullName() {
return `${this.firstName} ${this.lastName}`;
},
// 使用set定义属性fullName的设置行为
set fullName(value) {
// 假设value是"firstName lastName"的格式
const [firstName, lastName] = value.split(' ');
this.firstName = firstName;
this.lastName = lastName;
}
};
console.log(person.fullName); // 输出: John Doe
// 使用set设置fullName
person.fullName = "Jane Smith";
console.log(person.firstName); // 输出: Jane
console.log(person.lastName); // 输出: Smith
在这个例子中,`fullName` 不是一个直接存储数据的属性,而是一个访问器属性。当你尝试读取 `person.fullName` 时,实际上会执行 `get fullName()` 方法,并返回拼接后的全名。同样地,当你尝试设置 `person.fullName` 的值时,会执行 `set fullName(value)` 方法,该方法将传入的字符串 `value` 拆分为 `firstName` 和 `lastName`,并分别更新到对象的 `firstName` 和 `lastName` 属性上。
这种方式提供了对对象属性访问和修改的细粒度控制,非常适合需要执行额外逻辑或验证的场景。