在JavaScript中,getter和setter函数的作用是什么?
通常,我们使用getter和setter函数来控制对象属性的访问和修改行为,以增强代码的安全性和可维护性。
因为我们必然会有这样的需求:我们在读取或设置属性时需要执行自定义的逻辑,所以getter和setter就应运而生了。
getter函数用于读取属性值,语法如下:
get propertyName() { // 在这里返回属性值 }
setter函数用于设置属性值,语法是:
set propertyName() { // 在这里设置属性值 }
getter和setter函数可以让我们在读取或设置属性时执行「自定义逻辑」,例如:
class Person { constructor(name, age) { this._name = name; this._age = age; } get name() { return this._name.toUpperCase(); } get age() { return this._age; } set age(age) { if(age < 0 || age > 120) { throw new Error('Invalid age'); } this._age = age; } } const person = new Person('Andy', 18); console.log(person.name); // "ANDY" person.age = 200; // 抛出异常:"Invalid age" console.log(person.age); // 18
在上面这个例子中,我们定义了一个Person类,这个类有俩属性:name和age,我们使用getter函数来获取name属性的值并将其转换为大写字母,使用setter函数来设置age属性的值并添加了自定义逻辑来确保age属性的值在0到120之间。