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.hqwc.cn/news/234821.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆栈_删除字符串所有相邻重复项

//给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 // // 在 S 上反复执行重复项删除操作,直到无法继续删除。 // // 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 // // // // 示…

PowerDesigner数据库建模软件的安装

解压: 解压好以后,点击PowerDesigner.exe安装 这个安装的版本是15 选择安装路径,可以默认可以自定义: 直接点next: 全选了 点击next: 点击next: 点finish 汉化: 先把pojie和汉化文件…

window10家庭版中文转专业版流程

1.确认当前为家庭中文版 2.用管理员权限打开cmd窗口 3.输入 dism /online /get-targeteditions ,查询当前支持的升级的版本 4.专业版密钥:VK7JG-NPHTM-C97JM-9MPGT-3V66T 5.changepk.exe /productkey VK7JG-NPHTM-C97JM-9MPGT-3V66T

【C++】程序题( STL标准模板库)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

全网最最全的Jmeter接口测试:jmeter_逻辑控制器_交替控制器Jmeter(22):jmeter_逻辑控制器_交替控制器

交替控制器 该控制器包含的取样器步骤在每次循环中交替执行 交替控制器指每次运行一次时在交替控制器下的采样器只执行一个;如下图: 忽略子控制模块:如果勾选此项,交替控制器将子控制器像单一请求元素一样,一次 只允许一个请求/…

csdn最新最全面的Jmeter接口测试:jmeter_逻辑控制器_循环控制器

循环控制器 循环次数:设置该控制器下的请求的循环执行次数 永远:勾选上的话,会一直循环,即所谓死循环 注意:如果线程组本身已经设置了循环次数的话,那循环控制元件控制的子节点 的循环次数为线程组设置的…

Postman如何使用(四):接口测试

一.接口 1.程序内部接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块,发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互&#…

操作指南 | 如何使用API3请求链下数据

API3是一种去中心化解决方案,用于向智能合约平台提供传统且可扩展的API服务,使开发者能够访问如喂价和QRNG等链下资源。 API3由DAO管理,致力于在智能合约功能中轻松访问各种有用数据。 构建者在Moonbeam上可以访问不同的API3服务&#xff1…

【Web】攻防世界Web_php_wrong_nginx_config

这题考察了绕过登录、目录浏览、后门利用 进来先是一个登录框,随便怎么输前端都直接弹窗 禁用js后再输入后登录 查看源码,好家伙,不管输什么都进不去 直接扫目录 访问/robots.txt 访问/hint.php 访问/Hack.php 抓包看一下 cookie里isLogin0…

TypeScript 5.3

导入属性 TypeScript 5.3支持导入属性提案的最新更新。 导入属性的一个用例是向运行库提供有关模块预期格式的信息。 // We only want this to be interpreted as JSON, // not a runnable/malicious JavaScript file with a .json extension. import obj from "./somet…

如何使用Qchan搭建更好保护个人隐私的本地图床并在公网可访问

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景,在大量开发人员的努力下,已经开发出大…

一个人撸码!之vue3+vite+element-plus后台管理(标签页组件)

一个后台管理常常需要一个标签页来管理已经打开的页面,这里我们单独写一个组件来展示标签页数组。 该标签页组件只做展示不涉及操作数据。标签页数组可记录已打开的数组,还能定义什么页面需要缓存,是一个重要的功能呢。 首先,建立…