使现有的不可写和不可配置的属性可写和可配置

2023-11-22

假设我有一个对象:

var agent = new Agent({name: 'James', type: 'secret', id: 007})

当我构建 Agent 类时,我决定使 id 属性不可变:

Object.defineProperty(Agent.prototype, 'id', {
    configurable: false,
    writable: false
})

但在某些时候我会想要将该对象标记为删除。因为我们实际上无法删除this,我将通过移除id财产代替。所以我要再次使该属性可写:

Object.defineProperty(agent, 'id', {
    configurable: true,
    writable: true
})
delete agent.id

但我当然得到:

TypeError: Cannot redefine property: id 

Because id已经存在。

我怎样才能做一个existing不可写属性可写?


The Mozilla 文档 says

当属性已经存在时,Object.defineProperty() 尝试 根据描述符和描述符中的值修改属性 对象的当前配置。如果旧描述符有它的 可配置属性设置为 false(该属性据说是 “不可配置”),那么除了可写之外不能有任何属性 改变了。如果属性不可配置,则其可写属性可以 只能改成false。

换句话说,您必须设置configurable to true如果您想稍后修改属性定义(使其可写),请在第一个属性定义中。

请注意,您可以采用其他方式(使可写属性不可写)configurable is false,但这与您在这里所做的相反。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使现有的不可写和不可配置的属性可写和可配置 的相关文章

随机推荐

  • 使用 Play 2.6 和 akka 流的 Websocket 代理

    我正在尝试使用 Play 和 akka 流为 Websocket 连接创建一个简单的代理 交通流向是这样的 Client request gt gt request Server Proxy Client response lt lt re
  • Xcode 13.2.1 预览版无法工作,但模拟器可以工作

    我的XcodeVersion 13 2 1 13C100 遇到未知问题 我做了几件事 比如删除 Xcode 新安装 Xcode 从备份恢复 没有做任何更改 目前 该项目可以在模拟器中构建和运行 但不能在预览窗口中构建和运行 它给出了一条消息
  • 如何在Delphi中使用CopyRect方法

    我正在从磁盘加载图像并希望将其 部分 复制到第二个 TImage Image1 Picture LoadFromFile S with Image1 Picture Bitmap do Image2 Canvas CopyRect Imag
  • PHP SQL注入

    这几天上网冲浪 了解了SQL INJECTION ATTACK 我试图在我的本地计算机上实现 以了解如何做到这一点 以便我可以在我的系统中阻止它 我写过这样的代码 PHP代码 if count POST gt 0 con mysql con
  • 如何在 SQL Server 中查询大于特定日期的所有日期?

    我想 SELECT FROM dbo March2010 A WHERE A Date gt 2010 04 01 A Date好像 2010 03 04 00 00 00 000 然而 这是行不通的 任何人都可以提供一个参考为什么吗 se
  • 如何让TextView能够水平滚动

    我知道TextView嵌入在一个ScrollView 如果有一个相当长的String 其中不包含 n The TextView会根据宽度自动换行TextView If TextView的高度很短 那么我们就可以垂直滚动它 如何禁用自动换行
  • 从 Android AsyncTask 返回数据

    我试图在 SO 上提出类似的问题 但没有得到任何帮助 在我的 Android 应用程序中 我计划实现用户访问过的最近报价 即类似于最近访问过的网络页面 以下是我正在执行的步骤 1 每当用户打开任何公司视图时 从数据库中获取公司符号 2 然后
  • 如何检查 python 调试选项是否在脚本中设置

    如果我处于调试模式 我会想做一些其他的事情 而不是当我不在调试模式时 if DEBUG STORED DATA FILE os path join TEMP DIR store dat LOG LEVEL logging DEBUG pri
  • Newtonsoft.Json - 反序列化大对象时内存不足异常

    我在反序列化大约 1GB 的 JSON 文件时遇到问题 当我运行以下代码时 出现内存不足异常 using FileStream sr new FileStream myFile json FileMode Open FileAccess R
  • 如何在后台运行 GPS 应用程序?

    我想每 5 分钟将我当前的位置发送到 php web 服务 即使我的应用程序在后台运行 我尝试做这个东西 但是当我的应用程序处于运行状态时它工作得很好 但是当我将此应用程序放在后台时它会停止发送数据 所以请任何朋友告诉我如何在后台运行我的应
  • 更改 Access-Control-Allow-Origin 以允许 Jquery load() 工作

    情况 在网络服务器上运行的内部网站 SharePoint 在不同的内部 Web 服务器上运行 一切都是内部的 而且都是相同的company com内部域 不同的子域 因为它们是通过SharePoint company com and int
  • 使用 CSS 的 SVG 渐变

    我正在尝试将渐变应用于 SVGrect元素 目前 我正在使用fill属性 在我的 CSS 文件中 rect cursor pointer shape rendering crispEdges fill a71a2e And the rect
  • 如何让 argparse 选择默认的子解析器?

    我有以下代码script py import argparse parser argparse ArgumentParser sp parser add subparsers dest command sp default a a pars
  • C# GroupBy - 创建多个分组级别

    给定以下课程 public class Transaction public string Category get set public string Form get set 如何获得按两者分组的交易分组Category和Form 基本
  • 一个动作监听器,两个 JButton

    我有两个JButtons称为 左 和 右 向左 按钮将矩形对象向左移动 向右 按钮将其向右移动 我有一个ActionListener在充当单击任一按钮时的侦听器的类中 但是 我希望单击每个操作时发生不同的操作 我怎样才能区分 在Action
  • 函数中 sys.stdout.write() 和 time.sleep() 的问题

    我想要的是使用 time sleep 每秒打印一个点的 5 个点 但结果是在 5 秒延迟后一次打印了 5 个点 尝试了 print 和 sys stdout write 结果相同 感谢您的任何建议 import time import sy
  • 如何从hibernate查询中获取java.util.Map?

    我想知道从休眠查询获取地图数组的最佳方法是什么 Google 表示要迭代 query list 并创建 将对象放入空地图数组中 我想会有一些优雅而有效的方法来做到这一点 有人能给我主意吗 See Hibernate 文档 15 6 选择子句
  • Angular / Ionic 移动应用 ios 无法使用 angularfire 从 Firebase 获取

    我正在尝试在 iOS 模拟器上测试一些 Ionic Angular 示例应用程序 在网络上 所有使用 AngularFire 进行 Firestore 的请求都工作得很好 不知何故 如果我尝试在模拟器上执行相同的应用程序 它会不断加载请求的
  • 如何在 C# 中生成随机深色?

    我这样生成随机颜色 var random new Random var color String Format 0 X6 random Next 0x1000000 如何排除比某个值更亮的颜色 消除亮色 上半部分 的一个非常简单的方法是通过
  • 使现有的不可写和不可配置的属性可写和可配置

    假设我有一个对象 var agent new Agent name James type secret id 007 当我构建 Agent 类时 我决定使 id 属性不可变 Object defineProperty Agent proto