当前位置: 首页 > news >正文

js中get,set用法

1、作为对象的访问器属性

//使用Object.definePropertylet obj = {_a:'123'};Object.defineProperty(obj, "a", {get() {return this._a;},set(val) {this._a=val},});console.log(obj.a);  //123obj.a='456'console.log(obj.a) // 456
//使用对象字面量let obj= {_a:'123',get a(){return this._a},set a(val){this._a=val}}console.log(obj.a);  //123obj.a='456'console.log(obj.a)  // 456

注意:访问器属性通常对应一个数据属性,且不同名,否则可能会导致栈溢出。

2、作为class类的get,set函数,作为实例的访问器属性

 class Test {constructor() {this.a='123'}get _a() {console.log('执行了get')return this.a}set _a(val) {console.log('执行了set')this.a = val;}}

注意:如果发生以下情况:定义一个属性和获取、设置函数同名,而且是直接写在类块中,set,get将会 失效。

 class Test {_a='456'constructor() {this.a='123'}get _a() {console.log('执行了get')return this.a}set _a(val) {console.log('执行了set')this.a = val;}}

同样,也要注意设置函数和获取函数中访问的值或设置的值不能和函数同名,否则一样会栈溢出。

3、作为代理处理程序中的捕获器函数。

let target = {};let handler = {get(target, prop) {return Reflect.get(...arguments);},set(target, prop, val) {Reflect.set(...arguments);},};

http://www.dtcms.com/a/155635.html

相关文章:

  • 深度学习 视觉处理(CNN) day_02
  • 力扣-206.反转链表
  • SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎
  • 在 Spring Boot 项目中如何使用索引来优化 SQL 查询?
  • 再见,物理删除!MyBatis-Plus @TableLogic 优雅实现逻辑删除
  • 【ESP32S3】 下载时遇到 libusb_open() failed 解决方案
  • python如何取消word中的缩进
  • Unity3D IK解算器技术分析
  • 基于AIGC的3D场景生成实战:从文本描述到虚拟世界构建
  • BT150-ASEMI机器人率器件专用BT150
  • OceanBase 跻身 Forrester 三大领域代表厂商,全面支撑AI场景
  • 【C++游戏引擎开发】第24篇:级联阴影映射(CSM,Cascaded Shadow Maps)
  • springboot3 声明式 HTTP 接口
  • HTML 地理定位(Geolocation)教程
  • hadoop-3.3.5.tar.gz 镜像
  • OpenHarmony之电源模式定制开发指导
  • 策略模式(Strategy Pattern)详解
  • 2、Ubuntu 环境下安装RabbitMQ
  • 【高频考点精讲】前端构建工具对比:Webpack、Vite、Rollup和Parcel
  • 内联函数(c++)
  • 【FastJSON】的parse与parseObject
  • Oracle for Linux安装和配置(11)——Oracle安装和配置
  • 基于STM32、HAL库的MAX31865模数转换器ADC驱动程序设计
  • 嵌入式 C 语言面试核心知识点全面解析:基础语法、运算符与实战技巧
  • c++之网络编程
  • 立创商城、云汉芯城、亿配芯城均启用DeepSeek AI 大模型赋能电子元器件采购平台
  • 第十四届蓝桥杯刷题——day20
  • [官方IP] AXI Memory Init IP
  • 【音视频】AVIO输入模式
  • UnityEditor - 调用编辑器菜单功能