前端面试宝典---创建对象的配置

Object.create 对整个对象的多个属性值进行配置

创建对象 不可更改属性值

// 创建对象 不可更改属性值
let obj = Object.create({}, 
{name: {value: 'lisi',writable: false,},age: {value: 20,writable: true,}
})console.log('初始化obj', obj)
obj.name = 'wangwu'
console.log('更新不可变属性name', obj)
obj.age = 30
console.log('更新可变属性age', obj);   

在这里插入图片描述

创建对象 不可枚举属性

// 创建对象 不可枚举属性
let obj2 = Object.create({}, 
{name: {value: 'lisi',enumerable: false,},age: {value: 20,enumerable: true,}
})
for (const key in obj2) {console.log('不可枚举属性', key)
} // 不可枚举属性 age

创建对象 属性拦截器

// 创建对象 属性拦截器
let name = 'zhangsan'
let obj3 = Object.create({},{name: {get () {return name},set (value) {if (value === 'wangwu') {console.log('非法操作')return}name = value}}}
)console.log('初始化obj3', obj3)
obj3.name = 'wangwu'

在这里插入图片描述

Object.defineProperty 对一个对象的单个属性进行配置

let obj = { name: 'zhangsan' }
Object.defineProperty(obj, 'name', {value: 'lisi',writable: false,enumerable: false,configurable: false
})
console.log('obj', obj)
let obj2 = { name: 'wangwu' }
Object.defineProperty(obj2, 'name', {get () {return 'lisi'},set (value) {console.log('非法操作')}
})
console.log('obj2', obj2)`

在这里插入图片描述

总结

对象配置方法

Object.create(原型,配置) => 对象 :用于基于指定原型和配置创建对象,可进行整个对象的多个配置 。
Object.defineProperty(对象,属性名,配置) :用于为一个对象的单个属性进行配置。Object.defineProperties(obj, props)

配置项说明

  1. 值相关
    value:属性的默认值。
    writable:表示属性值是否可写。
  2. 访问器:
    setter(存储器 ):用于设置属性 value 。
    getter(获取器 ):用于获取属性 value 。
  3. 属性相关
    enumerable:决定属性是否能被 API 或者语法获取(即是否为开放属性)。
    configurable:决定属性是否可以被删除,以及是否能再次使用 defineProperty 重新定义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77701.shtml

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

相关文章

数据结构:C语言版严蔚敏和解析介绍,附pdf

《数据结构:C语言版(第2版)》严蔚敏李冬梅吴伟民.pdf 《数据结构:C语言版》严蔚敏,李冬梅.pdf 《数据结构C语言第2版习题解析与实验指导》李冬梅.pdf 「《数据结构:C语言版(第2版 )》…

深入理解 v-for 指令及其使用方法

在 Vue.js 中,v-for 是用于渲染列表的核心指令,它允许你通过循环渲染数据源中的每一项。通过 v-for,你可以轻松地将数组、对象或其他可迭代的数据渲染成 HTML 元素。本文将详细介绍 v-for 的基本用法、常见的应用场景、最佳实践及性能优化&am…

VIRT, RES,SHR之间的关系

VIRT、RES 和 SHR 是进程内存使用的三个关键指标,它们之间的关系反映了进程的内存分配和使用情况。以下是它们的定义和关系: VIRT(虚拟内存):表示进程分配的虚拟内存总量,包括所有代码、数据、共享库、堆栈…

2025届蓝桥杯JavaB组个人题解(暂时不全,没题目)

2025 届蓝桥杯 Java B 组题解 第一次参加蓝桥杯,输入输出都用的BufferedReader和PrintWriter,怕输入输出不对或者内存超限,也怕出现小错误运行不了的,比如Main打成Mian什么的,但还是希望能拿省一,这里给出自…

在Vue项目的引入meting-js音乐播放器插件

开源项目:https://github.com/swzaaaaaaa/NBlog 1、开源项目中音乐播放插件的使用流程 步骤1:下载meting-js相关文件 在MetingJS官方仓库或其他可靠的CDN获取meting-js的JavaScript文件以及相关依赖(如APlayer的文件)。将它们下…

HTML应用指南:利用GET请求获取全国汉堡王门店位置信息

在当今快节奏的都市生活中,餐饮品牌的门店布局不仅反映了其市场策略,更折射出消费者对便捷、品质和品牌认同的追求。汉堡王(Burger King)作为全球知名的西式快餐品牌之一,在中国市场同样占据重要地位。自进入中国市场以…

使用 Function 来编写策略模式:优雅而高效的设计模式实践

引言:为什么选择策略模式? 策略模式(Strategy Pattern)是行为设计模式中的经典之一,它允许我们定义一系列的算法或操作,并使得它们可以互换使用。策略模式的关键思想是将算法的实现与使用它们的上下文分离…

Windows 系统中安装 Git 并配置 GitHub 账户

由于电脑重装系统,重新配置了git. 以下是在 Windows 系统中安装 Git 并配置 GitHub 账户的详细步骤: 1. 安装 Git 访问 Git 官网下载页面下载 Windows 版本的 Git 安装程序运行安装程序,使用默认选项即可 2. 配置 Git 用户信息 打开命令…

MergeX亮相GTC2025:开启全球广告流量交易新篇章

全球流量盛宴GTC2025深圳启幕,共探出海新蓝海 2025年4月24日至25日,GTC2025全球流量大会将在深圳福田会展中心9号馆隆重召开。作为跨境出海领域内规模最大、资源最丰富、产业链最完备的年度盛会,此次大会将汇聚众多行业精英,共同探…

kubernetes》》k8s》》Volume 数据卷 PVC PV NFS

为啥需要数据卷 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重…

第十六届蓝桥杯 省赛C/C++ 大学B组

编程题目现在在洛谷上都可以提交了。 未完待续,写不动了。 C11 编译命令 g A.cpp -o A -Wall -lm -stdc11A. 移动距离 本题总分:5 分 问题描述 小明初始在二维平面的原点,他想前往坐标 ( 233 , 666 ) (233, 666) (233,666)。在移动过程…

谷歌怎么设置在新标签页中打开网页

按图示操作即可,藏得真深啊,无语,而且就算打开了,点收藏夹,顶部快捷栏里的网站,网站里的连接,打开也还是覆盖原来的,呵呵呵呵呵呵呵,有没有人管管 另外我的edge不知咋滴…

【企业级数据安全】掌握高性能Log4j2敏感信息脱敏方案

前言 在数据安全合规日益严格的今天,日志中的敏感信息保护已成为企业IT建设的必备环节。本文带您深入了解如何打造一套高性能、可实时配置的Log4j2日志脱敏插件,轻松应对各类敏感数据保护需求,让您的系统既满足合规要求,又不牺牲…

Linux中的tar -P选项

tar -P选项 Linux中的tar命令可用于文件和目录的归档以及压缩解压缩。而其中的-P选项是什么含义呢?下面我们就来看一看 1、不添加-P选项 对于如下压缩命令: tar -czvf pkg.tar.gz /opt/software执行该命名,控制台首行输出将会提示&#xf…

【2025年泰迪杯数据挖掘挑战赛】B题 详细解题思路+数据预处理+代码分享

目录 2025年泰迪杯B题详细解题思路问题一问题分析数学模型Python代码Matlab代码 问题二问题分析数学模型Python代码Matlab代码 问题三问题分析数学模型Python代码Matlab代码 问题四问题分析数学模型Python代码Matlab代码 2025年泰迪杯B题详细解题思路 初步分析整理了B题的赛题分…

SpringBoot3快速入门笔记

springboot3简介 SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是Spring) 大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术 特性: ● 快速创建…

记录centos8安装宝塔过程(两个脚本)

1、切换系统源&#xff08;方便使用宝塔安装脚本下载&#xff09; bash <(curl -sSL https://linuxmirrors.cn/main.sh) 2、宝塔安装脚本在宝塔的官网 宝塔面板下载&#xff0c;免费全能的服务器运维软件 根据自己的系统选择相应的脚本 urlhttps://download.bt.cn/insta…

Xdocreport实现根据模板导出word

只使用freemaker生成简单的word文档很容易&#xff0c;但是当word文档需要插入动态图片&#xff0c;带循环数据&#xff0c;且含有富文本时解决起来相对比较复杂&#xff0c;但是使用Xdocreport可以轻易解决。 Xdocreport既可以实现文档填充也可以实现文档转换&#xff0c;此处…

VMware Fusion Pro/Player 在 macOS 上的完整安装与使用指南

VMware Fusion Pro/Player 在 macOS 上的完整安装与使用指南—目录 一、VMware 产品说明二、下载 VMware Fusion三、安装前准备四、安装 VMware Fusion步骤 1&#xff1a;安装程序步骤 2&#xff1a;首次启动配置步骤 3&#xff1a;输入许可证 五、创建虚拟机步骤 1&#xff1a…

Redis常用数据结构和应用场景

一、前言 Redis提供了多种数据结构&#xff0c;每种结构对应不同的应用场景。本文对部分常用的核心数据结构和典型使用场景作出介绍。 二、String&#xff08;字符串&#xff09; 特点&#xff1a;二进制安全&#xff0c;可存储文本、数字、序列化对象等。场景&#xff1a; 缓…