为什么需要在 JavaScript 中冻结对象?

2024-06-23

我不清楚何时有人需要使用Object.freeze在 JavaScript 中。 MDN 和 MSDN 没有提供有用的现实生活示例。 我知道尝试在运行时更改这样的对象意味着崩溃。问题是,我什么时候会欣赏这次崩溃?

对我来说,不变性是一个设计时间约束,应该由类型检查器来保证。

那么,除了以后检测到违规总比不检测更好之外,在动态类型语言中发生运行时崩溃还有什么意义呢?


The Object.freeze函数执行以下操作:

  • 使对象不可扩展,以便无法向其添加新属性。
  • 将对象的所有属性的可配置属性设置为 false。当-configurable为false时,无法更改属性属性,也无法删除属性。
  • 将对象的所有数据属性的可写属性设置为 false。当 writable 为 false 时,无法更改 data 属性值。

这就是what一部分,但是why有人会这样做吗?

那么,在面向对象范例中,存在这样的概念:现有 API 包含某些元素,这些元素不应在当前上下文之外进行扩展、修改或重用。这final各种语言中的关键字就是最恰当的比喻。即使在未编译且易于修改的语言中,它仍然存在,即 PHP,在本例中为 JavaScript。

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

为什么需要在 JavaScript 中冻结对象? 的相关文章

  • jQuery:通过子项进行动画、连续循环

    接近但还没有完全实现 我想让第一个子 div 显示几秒钟 向下滑动 通过定位 并淡出视图 然后下一个子 div 向上滑动并淡入视图 连续重复 在显示最后一个子项后循环返回 看起来我已经让循环正常工作了 尽管计数似乎将子 div 堆叠在一起
  • 如何在 Angular 中按 ID 显示博客详细信息

    我想在 Angular 中通过 ID 显示博客详细信息 为此 当您单击博客主页上的按钮时 应用程序会将您带到博客详细信息页面 即 pagina component html 文件 我实现了在此处显示所有博客 但我真正想要的是显示一个独特的博
  • Angular 2 TypeError:无法读取 null 的属性“animate”

    我正在使用 Chrome 51 和 Angular 2 rc4 并在加载我的 Angular 应用程序时在控制台中弹出以下错误 TypeError Cannot read property animate of null at e supp
  • 角度单元格 xlsx 着色

    我有一个问题 我想根据一个值在我的 exel 行中添加红色或绿色来下载 如何在工作表中设置指定单元格的颜色 这是处理 exel 格式的 ts 类 表达 import Injectable from angular core import a
  • 如何使用 html 标签包装 window.getSelection().getRangeAt(0) 中的文本选择?

    如何从 window getSelection getRangeAt 0 中进行选择并用 HTML 标签 例如 span 或 mark 包围它 我更喜欢直接的 javascript 或 jQuery 解决方案 我可以使用警报输出选定的文本
  • 如何在 Bootstrap 中将单选按钮设置为“选中”? [复制]

    这个问题在这里已经有答案了 我使用 Bootstrap 按钮作为单选按钮 http getbootstrap com javascript buttons http getbootstrap com javascript buttons 这
  • 防止 Node.js 中的 SQL 注入

    是否有可能以与 PHP 具有防范 SQL 注入的预准备语句相同的方式防止 Node js 中的 SQL 注入 最好使用模块 如果是这样 怎么办 如果不 有哪些例子这可能会绕过我提供的代码 见下文 一些背景 我正在制作一个 Web 应用程序
  • ECMAScript 中定义的内部属性是什么?

    什么是内部属性 http es5 github com x8 6在 ECMAScript 中定义为 规格是什么意思 该规范使用各种内部属性来定义 对象值的语义 这些内部属性不是 ECMAScript 语言 它们是由本规范定义的 纯粹用于说明
  • GraphQL 错误字段类型必须是输入类型,但得到:

    这是突变 const createNotebook mutationWithClientMutationId name CreateNotebook inputFields token type GraphQLString details
  • javascript 中的工厂模式与构造函数模式[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我看到了关于 javascript 设计模式的教程 虽然教程很好 但它给我留下了很少的问题 正如我所见 工厂和构造函数产生相同的结果
  • 如何在传单地图上显示热图

    我想在我的传单地图上显示热图 我使用了 heatmap jshttps github com pa7 heatmap js https github com pa7 heatmap js但它最终只是显示 未捕获的类型错误 无法分配给只读属性
  • 如何使用javascript将数据存储在xml文件中?

    我是 javascript 新手 并在我的项目中使用它 因为我需要读取 xml 文件 然后在操作后我想将更新后的值存储回 xml 文件中 我成功从 xml 文件获取值 但无法存储值返回到 xml 文件 这是我尝试过的代码
  • 在 JavaScript/CoffeeScript 中确定一个数组是否包含另一个数组的内容

    在 JavaScript 中 如何测试一个数组是否包含另一个数组的元素 arr1 1 2 3 4 5 8 1 10 2 3 4 5 9 function name arr1 gt true 没有 set 函数可以执行此操作 但您可以简单地执
  • execCommand 的替代品

    我希望创建一个所见即所得编辑器 使用 jQuery 作为框架 我可以使用不同的方法来简化生产 我现在确实有一个正在工作的编辑 而且运作良好 我使用 iFrame 并将其设计模式设置为打开并从那里开始 然而 有一些事情困扰着我 以更改所选文本
  • JavaScript 模板文字稍后替换变量(在知道值之前)

    是否可以在已知值之前以某种方式使用模板文字 JS 模板文字的每个演示都如下所示 var name John var s Hello name 但在现实世界中 模板是在我们知道变量值之前定义的 某处定义了模板 在页面加载时 var s Hel
  • Javascript - 通过键获取特定 JSON 数组元素内的属性值

    我有一个像这样的 JSON 结构 map key1 valueA1 key2 valueA2 key3 valueA3 key1 valueB1 key2 valueB2 key3 valueB3 key1 valueC1 key2 val
  • 将json数据从servlet传递到jsp到js文件

    我得到了这个创建 JSON 数据的 servlet 我想将此数据传递到一个 jsp 页面 该页面应该通过 InfoVis 工具包显示数据 servlet java JSONObject json new JSONObject JSONArr
  • Promise链基本问题

    我正在尝试理解 Promise 我创建了一些有效的承诺链 而另一些则无效 我已经取得了进步 但显然缺乏基本概念 例如 以下承诺链不起作用 这是一个愚蠢的例子 但说明了问题 我正在尝试在链中使用 Node 的函数 randomBytes 两次
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio
  • 如何将国家/地区代码与电话号码分开?

    我的数据库中有很多电话号码 例如 1 123 456 7890 我要做的是将国家 地区拨号代码 在本例中为美国 加拿大的 1 与电话号码分开 我尝试创建所有国家 地区的 JSON 列表 并在加载页面时将电话号码和国家 地区代码分开 它工作正

随机推荐

  • 错误:确保控制器具有无参数公共构造函数 webapi

    我正在使用 webapi unity 和 mvc 我收到错误 确保控制器具有无参数公共构造函数 我已经看到类似问题的解决方案 但仍然无法使其工作 我已经安装了 unity webapi 并且似乎拥有所有必要的参考 Microsoft Pra
  • 如何使用 webpack 注入内部版本号?

    我想将内部版本号和版本信息注入到我的项目中 因为它是使用 webpack 构建的 例如 这样我的代码就可以执行以下操作 var buildInfo require build info 生成该值的最佳方法是什么build info构建时模块
  • 使用 sed 替换多行

    我以为我理解 sed 但我想不是 我有以下两个文件 我想用一个不同的行替换 why 和 huh 行 根本没有空格 测试 txt hi why huh hi why huh 测试2 txt 1 hi why huh hi why huh 以下
  • Rxjs 订阅方法被忽略

    在将其标记为重复之前 请注意这些都不适合我 问题1 https stackoverflow com questions 38142278 subscribe method is not triggered with rxjs 问题2 htt
  • FHIR 资源的 id 和标识符有什么区别?

    The Resource实体定义一个id属性为 此工件的逻辑 ID 同时对于像这样的资源MedicationRequest还定义了一个名为identifier 描述是 外部标识符 或 企业标识符 我想知道这两个属性有什么区别 从 RESTf
  • Bash:使用参数扩展查找和替换

    我想更换输入法 find string include 圆进度 38px 30px 4eb630 和输出 输出字符串 include 圆进度 38px 30px using find string pattern replacement s
  • 分解 SQL 表中每一行的 XML

    我有一个表 其中包含两列 ID 和 XML 数据 我想分解每个 ID 的 XML 我在 XML 中提取单个值 并且所有 XML 的结构都相同 我只是不确定如何循环遍历表并将 XML 查询应用于每一行 我需要应用的查询如下 Select to
  • MSVC:手动使用 link.exe

    我正在尝试使用测试 C OpenGL SDL 项目设置名为 Waf 的构建系统 但在链接过程中遇到了一些问题 据我所知 所有库都已正确找到 并添加到链接命令中 但链接过程似乎就像库未链接一样 为了尝试调试该过程 我尝试手动运行编译 链接过程
  • Ruby 中 block 和 &block 的区别

    为什么有时我应该在接受块的函数内使用 block 而有时应该使用 block block只是一个局部变量 block是对传递给该方法的块的引用 def foo block nil p block end foo gt nil foo tes
  • Nginx - “强制”200 缓存响应而不是 304

    是否有可能以某种方式强制执行 200 缓存 响应 而不是静态文件未修改的 304 响应 如果是这样 您可能会节省大量服务器请求 并显着加快回访者的加载时间 我发现单独的 Expires 并不能正确设置行为 下面是肯定的火 Set cache
  • 从 pdf 转换时的默认 imagemagick 密度

    我们有以下代码 convert foo pdf foo tiff 这多年来一直工作良好 并且生成的 tiff 具有合理的打印质量 我们刚刚升级了 imagemagick 现在 tiff 的分辨率较低 我假设最近的 IM 升级发生了一些变化
  • 使用 Quartz.net 配置 ADOJobStore

    如何使用 Quartz net 设置工作库 他们在网站上提供的教程对我没有帮助 在此页面中虽然有步骤http quartznet sourceforge net tutorial lesson 9 html http quartznet s
  • 私有 EC2 和 HTTP 流量中的 AWS 应用程序

    我有一个应用程序在私有子网的 EC2 实例中运行 以增加额外的安全性 直接从与公共子网关联的面向互联网的 NLB 接收流量 我还在公共子网中配置了一个 NAT 网关 以便私有 EC2 实例可以从 Internet 下载所需的任何内容 我刚刚
  • jQuery onclick addclass/removeclass 并添加淡入淡出

    在过去的三天里 我一直在寻找解决我的问题的方法 我见过很多人和我有同样问题的人 但没有一种解决方案可以解决我的问题 所以我又回到了起点 我请求你们友好的人们的帮助 我现在正在运行以下脚本 该脚本非常适合我 show commentsandn
  • 序列化和反序列化的 xstream 错误

    我在 Java 中使用 xStream 序列化 java 库中的 java 对象 并在客户端反序列化它 我有几个问题 如果我这样做 XStream xstream new XStream xstream setMode XStream ID
  • 动态添加 id 到每个表格单元格

    我正在尝试创建一个动态 js 表 我想动态地为每个单元格提供 id 我想使用这些 id 在不同的 js 事件处理程序中使用 怎样才能做到呢 我尝试过不同的方法 但没有一个有效
  • 如何从 SYSOUT 中删除 DFSORT 消息

    DFSORT 有多个消息 由具有多个排序操作的 COBOL 程序内部使用 我想删除那些 DFSORT 消息并仅保留 COBOL 程序中的消息 你有三个选择 使用 OUTDD ddname Enterprise COBOL 编译器选项更改用于
  • 使用 Retrofit 获取 api

    我有一个网络服务链接 我想用不同的 customerId 来访问它 其形式为 http apidev myserver com au 8980 TestService rest TestService jobs bycustid custo
  • 使图像跟随鼠标指针

    我需要一个火箭来跟随鼠标指针在我的网站上的移动 这意味着它应该旋转以面向运动方向 并且如果可能的话 根据它必须经过的距离加速 这可能吗 也许是jquery 通过使用 jquery 将 mousemove 注册到文档 将图像 css left
  • 为什么需要在 JavaScript 中冻结对象?

    我不清楚何时有人需要使用Object freeze在 JavaScript 中 MDN 和 MSDN 没有提供有用的现实生活示例 我知道尝试在运行时更改这样的对象意味着崩溃 问题是 我什么时候会欣赏这次崩溃 对我来说 不变性是一个设计时间约