ES6 中的 setter 和 getter 详解及使用示例

在 ES6 中,我们可以使用 setter 和 getter 来控制对象属性的访问和修改,这对于前端开发来说非常有用。本文将详细介绍 setter 和 getter 的用法,并提供一些使用示例。

什么是 setter 和 getter

在 ES6 中,我们可以使用 setter 和 getter 来控制对象属性的访问和修改。setter 和 getter 是一对函数,它们分别用于设置和获取对象属性的值。

setter 函数用于设置属性的值,它接受一个参数,并将该参数赋值给属性。getter 函数用于获取属性的值,它不接受任何参数,并返回属性的值。

setter 和 getter 的语法

setter 和 getter 的语法如下:

在这个示例中,我们定义了一个对象 obj,该对象有一个属性 prop,我们使用 set 关键字定义了一个 setter 函数,它用于设置属性的值;我们使用 get 关键字定义了一个 getter 函数,它用于获取属性的值。

setter 和 getter 的使用示例

下面是一些使用 setter 和 getter 的示例。

示例 1:控制属性的访问

我们可以使用 setter 和 getter 来控制属性的访问,例如,我们可以禁止用户修改某个属性的值:

在这个示例中,我们定义了一个对象 obj,该对象有一个属性 _prop,我们使用 _prop 存储属性的值,而不是直接使用 prop,这是因为我们需要在 setter 和 getter 函数中访问属性的值,如果我们直接使用 prop,会导致无限递归。

我们使用 set 关键字定义了一个 setter 函数,它用于设置属性的值,如果用户尝试修改属性的值,但是新的值不等于 'world',那么我们就禁止修改,并输出一条提示信息;否则,我们就将新的值赋值给 _prop

我们使用 get 关键字定义了一个 getter 函数,它用于获取属性的值,它直接返回 _prop 的值。

示例 2:计算属性的值

我们可以使用 setter 和 getter 来计算属性的值,例如,我们可以将两个属性相加作为一个新的属性的值:

在这个示例中,我们定义了一个对象 obj,该对象有两个属性 _prop1_prop2,我们使用 _prop1_prop2 存储属性的值。

我们使用 set 关键字定义了一个 setter 函数,它用于设置属性的值,但是我们并没有对属性进行任何操作,而是输出了一条提示信息。

我们使用 get 关键字定义了一个 getter 函数,它用于获取属性的值,它将 _prop1_prop2 相加,并返回结果。

示例 3:使用类来定义对象

我们可以使用类来定义对象,这样就可以更方便地定义对象的属性和方法:

在这个示例中,我们使用 class 关键字定义了一个类 Person,它有两个属性 _name_age,和两个方法 sayHitoString

我们使用 set 关键字定义了两个 setter 函数,它们分别用于设置 nameage 属性的值,如果用户尝试设置 age 属性的值小于 0,那么我们就禁止修改,并输出一条提示信息。

我们使用 get 关键字定义了两个 getter 函数,它们分别用于获取 nameage 属性的值。

我们使用 constructor 方法定义了类的构造函数,它接受两个参数 nameage,并将它们赋值给 _name_age 属性。

我们使用 new 关键字创建了一个 Person 对象,并调用了 sayHi 方法输出一条问候语。

我们修改了 nameage 属性的值,并调用了 sayHi 方法输出一条问候语。

总结

setter 和 getter 是 ES6 中的一个新特性,它们可以用于控制对象属性的访问和修改,提高了对象的安全性和可维护性。在实际开发中,我们可以使用 setter 和 getter 来计算属性的值、控制属性的访问、验证属性的值等,这些都可以提高我们的开发效率和代码质量。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655b2983d2f5e1655d555e62


纠错
反馈