ES6 JavaScript Class中get与set属性的用法详解

作者:纸飞机

时间:2026-10-22

浏览:475

本文详解ES6 Class中get和set关键字的用法。通过实例展示如何定义存值函数和取值函数以拦截属性存取行为,并分析其作用于属性描述符对象的机制,帮助开发者掌握自定义属性读取与赋值逻辑。

文章目录

ES6 Class get与set基本用法

本文通过具体实例,解析ES6 JavaScript中Class类的get与set关键字的应用方法,供读者参考学习。

与ES5标准一致,在Class定义内部可以使用get和set关键字,分别为特定属性配置存值函数(setter)和取值函数(getter),从而拦截并自定义该属性的读取与赋值行为。

属性存取器实例演示


class MyClass {
  constructor() {
    // ...
  }
  get prop() {
    return 'getter';
  }
  set prop(value) {
    console.log('setter: ' + value);
  }
}
let inst = new MyClass();
inst.prop = 123;
// setter: 123
inst.prop
// 'getter'

在上述代码示例中,prop属性关联了自定义的存值与取值逻辑,因此对该属性进行赋值或读取时,执行的是自定义的行为而非默认操作。

这些存值函数和取值函数实际上是定义在对应属性的描述符(descriptor)对象上的。

描述符对象中的get/set定义


class CustomHTMLElement {
  constructor(element) {
    this.element = element;
  }
  get html() {
    return this.element.innerHTML;
  }
  set html(value) {
    this.element.innerHTML = value;
  }
}
var descriptor = Object.getOwnPropertyDescriptor(
  CustomHTMLElement.prototype, "html");
"get" in descriptor // true
  "set" in descriptor // true

如前文代码所示,存值与取值函数被定义在HTML属性的描述对象中,这一机制与ES5的实现方式完全保持一致。

如需了解更多相关知识,可查阅本站的《ECMAScript6(ES6)入门教程》、《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》以及《javascript面向对象入门教程》等专题内容。

希望本文关于ECMAScript程序设计的内容能对大家有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章