当前位置:首页 > JavaScript

js实现getter

2026-03-13 22:42:49JavaScript

在 JavaScript 中实现 Getter

Getter 是对象属性的一种特殊方法,用于动态计算并返回属性值。通过 get 关键字定义,可以隐藏复杂的逻辑,让属性访问更直观。

js实现getter

基本语法

在对象字面量或类中使用 get 定义 Getter:

js实现getter

const obj = {
  get propertyName() {
    return computedValue;
  }
};

对象字面量示例

const user = {
  firstName: 'John',
  lastName: 'Doe',
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
};

console.log(user.fullName); // 输出 "John Doe"

类中使用 Getter

class User {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }
}

const user = new User('Jane', 'Smith');
console.log(user.fullName); // 输出 "Jane Smith"

计算属性动态命名

结合方括号语法实现动态属性名:

const dynamicProp = 'status';
const obj = {
  get [dynamicProp]() {
    return 'active';
  }
};

console.log(obj.status); // 输出 "active"

与 Setter 配合使用

通常 Getter 会与 Setter 配对实现完整属性控制:

const temperature = {
  _celsius: 0,
  get fahrenheit() {
    return this._celsius * 1.8 + 32;
  },
  set fahrenheit(value) {
    this._celsius = (value - 32) / 1.8;
  }
};

temperature.fahrenheit = 77;
console.log(temperature._celsius); // 输出 25

注意事项

  • Getter 不能接受参数
  • 避免在 Getter 中进行耗时操作
  • 属性会被枚举(可通过 Object.defineProperty 设置 enumerable: false

标签: jsgetter
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…