【发布时间】:2016-02-15 15:43:13
【问题描述】:
ES2015 在Object、getOwnPropertySymbols 上定义了一个新方法。我正在使用它从我拥有的对象中获取所有符号键:
let syms = Object.getOwnPropertySymbols(myObj);
以前,我在假设返回顺序是通过对符号的字符串版本进行排序来确定的情况下进行操作。快速测试表明这是错误的:
let obj = {};
obj[Symbol('Stack')] = 'Stack';
obj[Symbol('Overflow')] = 'Overflow';
Object.getOwnPropertySymbols(obj); // [ Symbol(Stack), Symbol(Overflow) ]
这是如何确定的?是它们被添加到全局符号注册表的顺序,还是像普通的Object.keys 一样“随机”?
【问题讨论】:
-
插入顺序,就像其他属性一样,除了可以扩展的键,它们是按数字排序的,但那些不是符号,所以只是插入。
-
@dandavis 这是一个自我回答,请在下面查看我的答案!如果我遗漏了什么,请告诉我
-
你为什么要这样做?
-
@dandavis 所以他可以分享他学到的东西
-
@dandavis 正如尼克所说,所以我可以分享我学到的东西。这比完整的博客文章更快(并且更有可能帮助人们)。见blog.stackoverflow.com/2011/07/…
标签: javascript ecmascript-6 symbols