当前位置:首页 > JavaScript

js实现getter

2026-04-05 16:55:58JavaScript

实现Getter的基本方法

在JavaScript中,Getter可以通过对象字面量或Object.defineProperty方法实现。对象字面量方式简洁,适合简单场景;Object.defineProperty更灵活,支持配置属性特性。

使用对象字面量定义Getter:

const obj = {
  _value: 42,
  get value() {
    return this._value;
  }
};
console.log(obj.value); // 输出42

使用Object.defineProperty定义Getter:

js实现getter

const obj = { _value: 42 };
Object.defineProperty(obj, 'value', {
  get: function() {
    return this._value;
  }
});
console.log(obj.value); // 输出42

在类中使用Getter

ES6类语法支持直接在类定义中使用Getter,适用于面向对象编程场景:

class MyClass {
  constructor() {
    this._value = 42;
  }

  get value() {
    return this._value;
  }
}

const instance = new MyClass();
console.log(instance.value); // 输出42

Getter与Setter结合使用

Getter常与Setter配对使用,实现对私有变量的受控访问:

js实现getter

const obj = {
  _value: 0,
  get value() {
    return this._value;
  },
  set value(newVal) {
    if (newVal >= 0) {
      this._value = newVal;
    }
  }
};

obj.value = 10;
console.log(obj.value); // 输出10
obj.value = -5; // 赋值无效
console.log(obj.value); // 仍输出10

计算属性Getter

Getter可以返回动态计算的值,而非简单返回存储值:

const circle = {
  radius: 5,
  get diameter() {
    return this.radius * 2;
  },
  get area() {
    return Math.PI * this.radius  2;
  }
};

console.log(circle.diameter); // 输出10
console.log(circle.area); // 输出约78.54

使用Proxy实现高级Getter

Proxy对象可以创建更灵活的Getter行为,包括处理不存在的属性:

const target = { _secret: 123 };
const handler = {
  get: function(obj, prop) {
    return prop in obj ? obj[prop] : `Property ${prop} not found`;
  }
};
const proxy = new Proxy(target, handler);

console.log(proxy._secret); // 输出123
console.logproxy.nonExistent); // 输出"Property nonExistent not found"

标签: jsgetter
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…