JS 对象按键顺序

2024-01-05

即使将新值分配给某个键,javascript 是否也能保证保留对象的键序列?

例如,如果我有以下对象

var Object = {
    keyX: value1,
    keyB: value2,
    keyZ: value3
}

如果我使用迭代键for .. in,我得到正确的顺序,即keyX, keyB, keyZ。如果我改变的值keyB,我在迭代中仍然得到相同的序列。

我的问题是,序列会始终保持不变,还是在任何情况下都可能发生变化?


嗯,文档中说得很清楚(MDN https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for...in):

for...in 循环迭代对象的属性 任意顺序。

And 本节 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/delete#Cross-browser_issues文档对此给出了更全面的解释:

尽管 ECMAScript 制定了对象的迭代顺序 依赖于实现,似乎所有主要浏览器 支持基于最早添加的属性的迭代顺序 首先(至少对于不在原型上的属性)。然而,在 以 Internet Explorer 为例,当对某个属性使用删除时,某些 混淆行为结果,阻止其他浏览器使用 简单的对象,如对象文字作为有序关联数组。

在资源管理器中,虽然属性值确实设置为未定义,但如果 稍后添加回具有相同名称的属性,该属性将 在原来的位置进行迭代——而不是在迭代结束时 删除该属性后的顺序如人们所期望的那样 然后将其添加回来。

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

JS 对象按键顺序 的相关文章

随机推荐

  • 丢失的 ;在 for 循环初始化程序之后

    var nodeWordsString document getElementById nodeWordsTextArea value trim var nodeWordsStringArray nodeWordsString split
  • 在 mac el Capitan 上将 Brew 降级到之前版本 (opencv3/3.0.0)

    我在 mac 上并使用过brew安装opencv3 我有 opencv3 3 0 0 今天 我更新了它并获得了版本3 1 0 1 但是 此更新破坏了一切 当我尝试使用 VideoCapture 读取帧并使用 waitKey 函数时 它会因以
  • 如何从`MoyaError`获取错误状态代码?

    我正在使用一个Moya Moya ModelMapper and RxSwift执行网络请求 这是我的示例代码 let provider RxMoyaProvider
  • 如何使用 Realm 查询随机项目

    我只是好奇有没有办法从 Realm 查询随机项目 我需要从我的领域中获取 4 件随机物品 一件指定了 ID 的特定物品 Edit 我不知道 Realm 中有获取随机对象的方法 但您可以按照下面的描述进行操作 一种方法是查询所有对象 然后生成
  • 使用 C# 将光标移动到 MsWord 中文本的末尾?

    这个问题听起来可能很简单 但我无法找到任何解决方案 我想做的是将MsWord中的光标位置移动到文本末尾 我的代码如下 object StartPos 0 object Endpos 1 Microsoft Office Interop Wo
  • 如何使用 casperJS 等待 socket.io 连接返回数据?

    我正在抓取一个使用 socket io 填充一些选择标签选项的页面 在评估页面之前如何等待套接字接收数据 我在用casperJS http casperjs org 套接字代码 由目标站点加载 socket on list function
  • 导入错误:没有名为“Cython”的模块

    我正在尝试做from Cython Build import cythonize我收到消息ImportError No module named Cython 但是我用命令安装了Pythonpip install Cython 怎么了 Py
  • scapy 十六进制转储()

    我想知道哪个hexdump scapy 使用 因为我想修改它 但我根本找不到任何东西 我发现的是 def hexdump self lfilter None for i in range len self res p self elt2pk
  • Linux 上的 Java BlockingQueue 延迟较高

    我正在使用 BlockingQueue s 尝试 ArrayBlockingQueue 和 LinkedBlockingQueue 在我当前正在处理的应用程序中的不同线程之间传递对象 在此应用程序中 性能和延迟相对重要 因此我很好奇使用 B
  • 检查 JSON 和 XML 是否有效? C#

    我使用 newtonsoft json nethttp json codeplex com http json codeplex com 我想知道 如何验证 json 和 xml 是否有效 json xml 我如何验证这一点 您想要在服务器
  • 如何在双引号字符串中使用对象的属性?

    我有以下代码 DatabaseSettings NewDatabaseSetting select DatabaseName DataFile LogFile LiveBackupPath NewDatabaseSetting Databa
  • Qt中有进程内本地管道吗?

    Qt 有没有QIODevice适合的一对intra 处理点对点通信 人们可以使用混凝土QTCPSocket or QLocalSocket 但是服务器端连接API有点麻烦 而且强制数据通过OS似乎很浪费 以下是一个可用的基本实现 它使用内部
  • 将 UILabel 高度设置为 0

    是否可以通过编程方式设置 UILabel 的高度 我在 Xib 文件中添加了一系列约束 因此每个其他标签都依赖于其上方或下方的标签来定位 如果我可以使用 它会让我的生活变得更轻松 nameLabel height 0 我的 Xib 看起来像
  • 设置HttpClient的授权头

    我有一个用于 REST API 的 HttpClient 但是我在设置授权标头时遇到问题 我需要将标头设置为执行 OAuth 请求时收到的令牌 我看到一些 NET 代码表明以下内容 httpClient DefaultRequestHead
  • 如何使 COMReference 在 Azure CI/CD 管道中工作

    我在我的项目中使用了一个 dll 它被添加到我的项目文件中作为COMReference喜欢关注
  • 使用带有 $ 的逻辑向量对数据帧进行子集化

    我无法理解使用原因 and behavior of the 子集 a 中的符号data frame下面的例子是在我正在参加的初学者课程中提出的 不是现场教授 所以不能在那里询问 temp mat lt matrix 1 9 nrow 3 c
  • 如何使用嵌套的 NSDate 属性将 Realm 对象转换为 JSON?

    我有一个带有多个嵌套的嵌套 Realm 对象NSDate嵌套对象中的属性 我在用这个答案 https stackoverflow com questions 32023249 how can i convert a realm object
  • 归一化编辑距离公式解释

    基于本文 IEEE PAITERN 分析交易 归一化编辑距离的计算及应用本文归一化编辑距离 http www csie ntu edu tw b93076 Computation 20of 20Normalized 20Edit 20Dis
  • 超级模糊纹理 - XNA

    当我近距离观察纹理时 我的纹理似乎变得非常模糊 我正在创建一个类似 Minecraft 的地形 我希望纹理能够像素化 就像它是制作出来的一样 而不是 XNA 尝试为我平滑它 它的显示方式如下 任何建议将不胜感激 它与抗锯齿无关 它与硬件如何
  • JS 对象按键顺序

    即使将新值分配给某个键 javascript 是否也能保证保留对象的键序列 例如 如果我有以下对象 var Object keyX value1 keyB value2 keyZ value3 如果我使用迭代键for in 我得到正确的顺序