1.symbol是在ES6中引入的一种基本数据类型,因为symbol是不重复、唯一的数据特性,symbol设计是被用来表示对象内部的私有属性的。
 
 
symbol.for与symbol.keyfor:
 
let a = Symbol.for(‘123’)

let b= Symbol.for(‘123’)

a == b // true

(在全局用这个key来registry)

Symbol.for是这样工作的, 先搜索全局用这个key注册的Symbol,如果没有,用key在全局注册一个Symbol

Symbol.keyfor搜索全局Symbol registry,找到这个Symbol的key

Symbol.keyfor(a) //123

Symbol.keyfor(b)  //123

 
有一些JS内置对象内部有[Symbol.iterator]属性,该属性对应了一个符合iterator protocol的迭代方法,以此该对象才具有可迭代(iterable)的特性(常见的,如for...of就是在调用迭代方法),实现了这些方法的对象包括数组、类数组对象(函数的arguments对象)、(普通对象没有实现[Symbol.iterator])
 
 
 
2.可迭代的   (iterable protocol:如果一个对象实现了[Symbol.iterator]方法,并且该方法是一个迭代器,那么这个对象是可迭代的
 
 
 
3.迭代器     (iterator protocol:如果一个对象内部有一个next方法,该方法是无参的,并返回一个有value属性和done属性的对象,那么这个对象是一个迭代器
 
 
 
4.生成器     (generator function:生成器(生成器函数)会生成一个生成器对象(generator object),生成器函数用function* expression 来声明,内部可以进行yield和return操作
 
生成器对象(generator object):生成器对象由生成器生成,并且是可迭代的,这种对象满足了iterable protocol和iterator protocol  ,generator object是迭代器
 
 
 
资料:
- https://developer.mozilla.org/en-US/docs/Glossary/Symbol
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator

最新文章

  1. Spring中的单例一二
  2. php课程---JavaScript与Jquery的区别
  3. Oracle deadlock SX/SSX caused by no index on foreign key.
  4. C#获得和发送网站Session
  5. #添加屏蔽IP LINUX
  6. Python使用时间戳
  7. SpringMVC @ResponseStatus 的用法
  8. 【Time系列五】个性时钟与秒表升级版
  9. 201521123014《Java程序设计》第13周学习总结
  10. HDU--2114
  11. ELK 经典用法—企业自定义日志手机切割和mysql模块
  12. c语言一,二数组
  13. django mongodb配置
  14. look back to 2018
  15. dubbo线程模型
  16. #WEB安全基础 : HTTP协议 | 0x11 HTTP的分块传输模块
  17. Java基础知识盘点(三)- 线程篇
  18. UnityShader实现物体被遮挡描边
  19. Angularjs 滚动条控制
  20. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context}Setting property 'source' to 'org.eclipse

热门文章

  1. linux格式化磁盘命令
  2. 当有多个相同的DIV时,我怎么判断我点击的是哪个
  3. windows server :远程桌面服务当前正忙,因此无法完成您尝试执行的任务
  4. Problem 1538 - B - Stones II 贪心+DP
  5. Thiago2(TPO AI.ROSTO):集成式AI换脸软件(Autodesk Flame)
  6. 曝郭盛华公司30万美元收购Acn.ai域名,揭秘人工智能布局下的巨头们
  7. mysql<七>
  8. ERROR 1040 (08004): Too many connections
  9. mysql——二级索引(辅助索引)
  10. 编译caffe-gpu-cuda及cudnn-tar 下载地址