React.addons.createFragment 对象中元素的顺序

2023-12-08

我正在读https://facebook.github.io/react/docs/create-fragment.html文章中发现 FB 工程师依赖于对象内存布局(属性的顺序):

if (this.props.swapped) {
  children = React.addons.createFragment({
    right: this.props.rightChildren,
    left: this.props.leftChildren
  });
} else {
  children = React.addons.createFragment({
    left: this.props.leftChildren,
    right: this.props.rightChildren
  });
}

我是否遗漏了某些东西,或者他们依赖不可靠并提供脆弱的代码?

PS:这个问题是从 ES 规范的角度提出的(我希望得到回答),而不是从某些 JS 引擎实现的角度(这可能会在规范内发生变化)。


(免责声明:我不代表 Facebook 发言,这是我自己的观点)

您可能错过了这个注释(这可能更重要):

另请注意,我们在这里依赖 JavaScript 引擎保留对象枚举顺序,这不受规范保证,但由所有主要浏览器和虚拟机针对具有非数字键的对象实现。

然而,即将推出的 ECMAScript 版本(ES6/ES2015)实际上正式化了迭代行为(如果我正确理解了规范)。

在规范中,提到了一个对象的内部[[Enumerate]] method:

[[Enumerate]] 必须获取目标对象自己的属性键,就像调用其 [[OwnPropertyKeys]] 内部方法一样。

And [[OwnPropertyKeys]]定义为

当调用 O 的 [[OwnPropertyKeys]] 内部方法时,执行以下步骤:

  1. 让keys成为一个新的空列表。
  2. For each own property key P of O that is an integer index, in ascending numeric index order
    1. 添加 P 作为键的最后一个元素。
  3. For each own property key P of O that is a String but is not an integer index, in property creation order
    1. 添加 P 作为键的最后一个元素。
  4. For each own property key P of O that is a Symbol, in property creation order
    1. 添加 P 作为键的最后一个元素。
  5. 返回键。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React.addons.createFragment 对象中元素的顺序 的相关文章

随机推荐

  • 根据模式将文件拆分为多个文件,并通过 Unix 中的搜索模式命名新文件?

    如何根据搜索模式拆分文件 并且将生成的新文件的文件名将等于用于拆分文件的搜索模式 目前 我正在使用以下命令来分割文件 awk GROUP x F i print gt x cdw all jobs reduced3 txt 它生成的文件名称
  • 使用 jQuery 和 Drupal6 自动更新宽度/长度/面积

    我正在使用 Drupal 创建测量表 Drupal 6 中的测量表 并且现在所有字段都已就位 我只需要编写一些 jQuery 在用户输入数据时自动更新相应的字段 代码如下 jQuery document ready function inp
  • 如何将列表分配为子列表,同时保持元素的原始顺序?

    如何将列表拆分为给定数量的列表 按顺序获取元素并将它们分配到子列表 因此不对列表进行分区 我想尽可能 好 地做到这一点 使用 Java 8 功能或 Guava 或类似的东西 示例列表 1 2 3 4 5 6 7 应分为 3 部分 1 4 7
  • 在 HTML 选择下拉选项中设置下拉元素的宽度

    我正在开发一个网站 该网站涉及使用 PHP 脚本自动填充选择框 这一切都工作正常 除了问题是我用来填充文本框的标题很长 它们是期刊文章和演示文稿标题 下拉框延伸到最长元素的宽度 该元素延伸到屏幕边缘 因此使滚动条无法到达 我尝试过各种方法尝
  • 使用 Postman 访问 OAuth 2.0 Google API

    我正在尝试访问邻近谷歌API using 邮递员 Chrome 应用程序 我已按照邮递员和谷歌开发网站上的教程进行操作 但仍然收到 401 错误消息 我在做什么 第 1 步 启用 Proximity API 为了使用 Proximity A
  • :app:processDebugResources 的executeTaskAction 失败

    我收到此错误消息 构建 构建失败 gt 运行构建 gt 运行任务 gt app processDebugResources gt executeTaskAction 下面显示的代码顺序为 错误消息 然后 build gradle Proje
  • 为什么Python中主进程退出时子进程(daemon=True)不退出?

    这是官方的解释daemonpython 多处理中的标志 当进程退出时 它会尝试终止其所有守护子进程 据我了解 父进程退出时会杀死其守护进程标志设置为 True 的子进程 下面是我用来证明我的猜测的代码 但结果不同 import multip
  • 打字稿条件:backend_layout(带幻灯片)

    我用这个条件 globalVar GP colPos 0 page backend layout pagets MainTemplate 我的问题是我的 子页面 没有选择 backend layout 因为设置了父页面 后端布局 此页面的子
  • C函数内存分配

    在 C 语言中 函数何时分配以及它在内存中的何处 函数的内存是在第一次编译程序时分配的 还是在第一次看到函数调用时分配的 它是分配在堆栈上还是在代码段中 你的问题问得很好 但是要做好应对一些额外复杂性的准备 因为其中一些东西会接触到运行代码
  • 使用 AutoHotKey 查找并填写输入字段

    对所有 AutoHotKey 大师的挑战 给我们一个函数查找并移动光标到输入字段 例如登录名 或者发送输入文本 对于像我这样又老又懒的黑客来说 只是摆弄 AHK 它看起来像这样 FindFillField elementid sendtex
  • Javascript Array.some() 和 Array.every() 相当于 Set?

    在 JavaScript 中 是否有等价的Array some and Array every 为了Set内置对象 不 唯一的内置方法Set prototype are Set prototype add Set prototype cle
  • 从 &str 数组获取 Iterator

    我正在尝试抽象一个函数来获取两个实例std str Lines以及用于测试目的的模拟版本 由一系列创建 str 我的代码 确实有效 看起来像这样 use std fs test fn test day 1 let v 3 3 4 2 4 i
  • 如何解决“Newtonsoft.Json.JsonSerializationException无法找到用于类型的构造函数”Android错误?

    我正在使用 Unity3D 开发应用程序 我将我自己的实用程序 DLL 与一些类一起使用 我已经工作了几个月了 并且毫无问题地进行了很多构建 编译 上周向 DLL 添加了一个新类 它在我的 PC 中运行良好 但当我构建该项目并在我的 And
  • Pymunk 伺服关节

    如何在 Pymunk 中实现 伺服 关节 我正在尝试创建一个简单的模型 其中一个盒子在其下方的一条细 腿 上保持平衡 我已经能够创建一个盒子并使用PinJoint 但似乎没有任何方法可以控制连接连接到盒子的角度 我希望能够指定附着角度 其他
  • 在 scons 'Program' 命令中使用 'LIBS' 找不到静态库,为什么?

    我有一个 n c 作为主函数 o c 作为导入函数 如下所示 cat n c o c int f int main f return 0 include
  • 将节点附加到现有的 xml-Java

    我已经看到 vb 和 c 回答了同样的问题 但我需要一个 Java 最佳解决方案来将节点附加到 xml xpath 有帮助吗 我有 a b b a
  • 在 Ember.CollectionView 渲染结束时运行 jquery

    我有一个容器视图其中包含一个集合视图 在这之后集合视图呈现在屏幕上我需要执行jquery函数它本质上是查看渲染模板的内容并执行一些显示修改 如果我在插入元素 of 集合视图它可以工作 但它会针对中的每个元素执行集合视图因为我真的只需要在最后
  • 如何在气泡图中的 ggplot 2 中设置 geom_vline 和 geom_hline 的背景

    我想在气泡图上添加一条垂直线和一条水平线 而不过度绘制气泡 数据来了 a lt c np prepp vp animal artifact communication ipv isv b lt c 0 51 0 32 0 85 0 61 0
  • 正则表达式意外结束

    我只想从路径中获取带有扩展名的文件名 C Users anandada workspace MyTestProject src OpenTest c 以下声明 fileName re match c fileName 给出错误 正则表达式意
  • React.addons.createFragment 对象中元素的顺序

    我正在读https facebook github io react docs create fragment html文章中发现 FB 工程师依赖于对象内存布局 属性的顺序 if this props swapped children R