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

JS之Object.defineProperty方法

给对象添加属性的方法有许多,这次让我为大家介绍一种给对象添加属性的静态方法吧!
语法:Objcet.defineProperty(对象的名称,“添加的键名”,{value:键值})

	const obj = {name:"张三",age:18}// 我们给obj添加一个新属性Object.defineProperty(obj,"hobby",{value:"打篮球"})console.log(obj);

在这里插入图片描述
可以看到我们成功添加了一个属性
这种静态方法还可以玩
我们添加了这个属性,我们可以控制这个属性能否被修改,能否被删除,能否被循环
我为大家介绍一下以下三个方法
writable:布尔值;如果为true就是能被修改,为false不能被修改
configurable:布尔值;如果为true就是能被删除,为false不能被删除
enumerable:布尔值;如果为true就是能被循环,为false不能被循环

	const obj = {name:"张三",age:18}// 我们给obj添加一个新属性,可修改,不可删除,不可循环Object.defineProperty(obj,"hobby",{value:"打篮球",writable:true,configurable:false,enumerable:false})obj["hobby"] = "踢足球"//修改成功delete obj["hobby"]//删除失败for(let k in obj) {console.log(obj[k]);//不能循环到hobby}console.log(obj);

在这里插入图片描述

getter与setter

    const obj = { name: "张三", age: 18 }// 我们给obj添加一个新属性,可修改,不可删除,不可循环Object.defineProperty(obj, "hobby", {get() {console.log("获取了")// 返回一个篮球return "篮球"},set(val) {console.log("被修改了")// 修改后val为足球console.log(val)}})// 获取obj["hobby"]console.log(obj)// 修改后val为足球obj["hobby"] = "足球"console.log(obj)

在这里插入图片描述

来看第一次打印的对象
在这里插入图片描述
来看第二次打印的对象
在这里插入图片描述
我们发现hobby的属性值没有被修改
这是一个注意点

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

http://www.lryc.cn/news/248737.html

相关文章:

  • 卷积神经网络(CNN)注意力检测
  • 4. 权限,特权
  • 云原生系列Go语言篇-泛型Part 2
  • 借助ETL快速查询金蝶云星空表单信息
  • 基于深度学习的驾驶员状态监测预警系统(正文)
  • 读书笔记之《价值》张磊
  • 【shell】文本三剑客之sed详解
  • Centos7 制作Openssh9.5 RPM包
  • C语言--每日选择题--Day30
  • LeetCode 274. H指数——排序
  • 【洛谷 B2038】奇偶 ASCII 值判断 题解(顺序结构+取余)
  • Ubuntu 20.4 源代码方式安装 cdo(笔记)
  • 电子学会C/C++编程等级考试2022年12月(三级)真题解析
  • 二叉树的最近公共祖先(C++实现)
  • 【conda】容易遗忘的命令使用总结
  • 蓝桥杯第一天-----时间显示
  • 多文件夹图片预处理:清除空值、重置大小、分割训练集
  • 【Java】集合 之 使用 Map
  • 第二证券:股票几点到几点开盘?
  • goweb入门教程
  • 量子计算:探索未来的计算技术
  • HarmonyOS应用开发者基础认证考试题目及答案
  • c# 文件读取和写入
  • 【MySQL库的操作】
  • rocketmq 集群环境部署及与spring cloud 集成
  • SpringBoot——配置及原理
  • fiddler抓包安卓
  • Maven 进阶学习指南---setting详解
  • 人工智能与我们的生活
  • 前端将blob转换为可下载的url及下载