• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

Symbols 循环迭代与 for…in 迭代

JAVA web前端中文站 2年前 (2017-07-17) 910次浏览 未收录 0个评论

前面说了 symbol 是一种数据类型。既然是一种数据类型,那么它就应该支持循环迭代等计算。那么 symbol 是如何进行迭代的呢?本文将为你揭开答案。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

Symbols 循环迭代与 for…in 迭代

Symbols 与 for…in 迭代

Symbols 在 for…in 迭代中不可枚举。另外,Object.getOwnPropertyNames() 不会返回 symbol 对象的属性,但是你能使用 Object.getOwnPropertySymbols() 得到它们。

 var obj = {}; obj[Symbol("a")] = "a"; obj[Symbol.for("b")] = "b"; obj["c"] = "c"; obj.d = "d"; for (var i in obj) {    console.log(i); // logs "c" and "d" }

Symbols 与 JSON.stringify()

当使用 JSON.strIngify() 时以 symbol 值作为键的属性会被完全忽略:

 JSON.stringify({[Symbol("foo")]: "foo"});                  // '{}'

Symbol 包装器对象作为属性的键

当一个 Symbol 包装器对象作为一个属性的键时,这个对象将被强制转换为它的包装过的 symbol 值:

【注:本文源自网络文章资源,由站长整理发布】

 var sym = Symbol("foo"); var obj = {[sym]: 1}; obj[sym];            // 1 obj[Object(sym)];    // still 1

参考资料

  • Glossary: Symbol data type
  • typeof
  • Data types and data structures
  • "ES6 In Depth: Symbols"(深入 ES6 Symbols ) on hacks.mozilla.org

web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Symbols 循环迭代与 for…in 迭代
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址