📅  最后修改于: 2023-12-03 15:16:15.093000             🧑  作者: Mango
在面向对象编程中,getter 和 setter 是两个重要的概念。它们可以让我们控制某个属性的访问和修改,并在代码中实现更高级别的逻辑。在 JavaScript 中,我们通过定义 getter 和 setter 方法来实现这些功能。
在 JavaScript 中,我们可以使用 Object.defineProperty()
方法来定义 getter 和 setter 方法。下面是一个简单的例子:
class Person {
constructor(name) {
this._name = name; // 注意这里使用的是私有属性 _name
}
// 定义 name 的 getter 方法
get name() {
return this._name;
}
// 定义 name 的 setter 方法
set name(name) {
if (name.length < 4) {
console.log("名字长度应该大于 4 !");
return;
}
this._name = name;
}
}
const person = new Person("张三");
console.log(person.name); // 输出 "张三"
person.name = "李四";
console.log(person.name); // 输出 "李四"
person.name = "小"; // 输出 "名字长度应该大于 4 !"
在上面的例子中,我们使用 get name()
和 set name()
方法来分别定义 name 属性的 getter 和 setter 方法。注意,在 getter 和 setter 方法的名称上,我们省略了 get
和 set
关键字,直接使用了属性名。
使用 getter 和 setter 方法和普通属性类似。然而,由于 getter 和 setter 方法是实际处理属性值的方法,因此我们实际上是在调用方法而不是直接访问属性。
class Person {
constructor(name) {
this._name = name; // 注意这里使用的是私有属性 _name
}
// 定义 name 的 getter 方法
get name() {
return this._name;
}
// 定义 name 的 setter 方法
set name(name) {
if (name.length < 4) {
console.log("名字长度应该大于 4 !");
return;
}
this._name = name;
}
}
const person = new Person("张三");
console.log(person.name); // 调用 name 的 getter 方法
person.name = "李四"; // 调用 name 的 setter 方法
console.log(person.name); // 调用 name 的 getter 方法
在上面的例子中,我们通过调用 person.name
和 person.name = "李四"
方法来分别调用 name 的 getter 和 setter 方法。
在 JavaScript 中,我们可以使用 get
和 set
关键字来定义类的 getter 和 setter 方法。通过这些方法,我们可以控制属性的访问和修改,并在代码中实现更高级别的逻辑。同时,由于我们实际上是在调用方法而不是直接访问属性,因此使用 getter 和 setter 方法时,我们应该注意方法的名称和使用方式。