在前端开发中,我们常常需要操作对象的属性。ES6 中引入了 getter 和 setter 方法,让我们可以通过类似方法调用的方式来操作对象属性,这种方式更加便利、易读。而 ES11 进一步提供了 accessor properties,使得我们能够定义更加灵活的 getter 和 setter,有助于编写更加具有表达力的代码。
什么是 Accessor Properties?
Accessor Properties 是 ES11 中新增的一种属性类型。它允许我们定义 getter 方法和 setter 方法,从而能够更加灵活、有表达力地操作对象属性。Accessor Properties 和普通的属性类型不同,在访问时需要使用 getter 和 setter 方法,而无法通过键值访问。
Accessor Properties 定义方式如下:
let obj = { get propertyName() { // getter 方法定义 }, set propertyName(value) { // setter 方法定义 } };
其中,get propertyName()
定义了 getter 方法,set propertyName(value)
定义了 setter 方法。在属性名之前使用 get
和 set
关键字,表示该属性是一个 Accessor Property。
Accessor Properties 的优势
使用 Accessor Properties 的主要优势在于能够让代码更加清晰、易读。它允许我们将一些逻辑隐藏起来,只暴露出 getter 和 setter 方法,让外部代码更加简洁易懂。
例如,我们要定义一个对象 person
,其中包括 firstName
和 lastName
两个属性,我们希望可以在设置 fullName
属性时,自动分离其中的 firstName 和 lastName:
// javascriptcn.com 代码示例 let person = { firstName: '', lastName: '', get fullName() { return `${this.firstName} ${this.lastName}`; }, set fullName(value) { let parts = value.split(' '); this.firstName = parts[0]; this.lastName = parts[1]; } }; person.fullName = 'John Doe'; console.log(person.firstName); // John console.log(person.lastName); // Doe
这里,我们通过定义 fullName
属性的 getter 和 setter 方法,封装了 firstName 和 lastName 的处理过程,使得外部代码更加简洁易懂。
总结
Accessor Properties 是 ES11 中新增的一种属性类型,它允许我们定义更加灵活、有表达力地 getter 和 setter 方法,有助于编写更加具有表达力的代码。使用 Accessor Properties 可以让代码更加清晰、易读,封装一些逻辑,使得外部代码更加简洁易懂。
示例代码
// javascriptcn.com 代码示例 // 定义一个对象 let person = { firstName: '', lastName: '', get fullName() { // 返回 fullName,由 firstName 和 lastName 拼接而成 return `${this.firstName} ${this.lastName}`; }, set fullName(value) { // 设置 fullName 时,分离其中的 firstName 和 lastName let parts = value.split(' '); this.firstName = parts[0]; this.lastName = parts[1]; } }; // 对 fullName 赋值,并打印 firstName 和 lastName person.fullName = 'John Doe'; console.log(person.firstName); // John console.log(person.lastName); // Doe
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654376f17d4982a6ebd3ee72