ES6走一波 Iterator】的更多相关文章

Iterator---> for ... of 循环 Generator函数原生具有 Iterator接口,所以可采用数组的形式解构赋值…
Destructuring  变量的解构赋值 是一种模式匹配 ES6我关注点之一是用途  能否举些好例子是检验学习到位的方法之一 交换变量值 函数返回多个值 函数入参为对象.数组,内部使用更简洁 意义: 减少冗余代码 let {a, b} = {'', false} 对同一对象的多次属性获取的优化写法很简洁 let {sin, PI} = Math 变量解构赋值的过程是将值遍历的过程(等号右边的值是一个可遍历解构(实现了Iterator)) 默认值得生效条件: 值严格等于 undefined 捕…
ES6字符串扩展: 处理大码点字符 字符的Unicode表示法 \uxxxx表示一个字符串,超出 \u0000 ~ \uffff范围,必须用两个双字节形式表示. ES6改进为 将码点放到大括号 可正确解读 codePointAt() JS字符以 UTF-16 格式存储,每个字符固定为2个字节.需要4个字节的字符,js认为它们是两个字符. codePointAt可正确处理 4 字节存储的字符 由4字节和2字节组成的字符串中 通过for ... of 循环可在第二次拿到2字节字符 codePoint…
ES6模块设计思想:  尽量静态化,使得编译时就能确定模块的依赖关系,输入.输出的变量.可做静态优化. ES6模块不是对象,而是通过export命令显示指定输出的代码,再通过import命令输入 export命令可出现在模块文件的任何位置,只要处于顶层即可 export default 为模块指定默认输出   import不要大括号 export export default 方法输出模块,import时可方便指定任意名字(不需要“大括号”语法) import 文件路径(绝对.相对)js后缀可省…
Array flat 数组实例的扁平化方法(浏览器支持不佳) 建议使用 lodash的 flatten…
Proxy:像拦截器,对目标对象修改等进行拦截,是一种元编程(meta programming),即修改JS语言本身. //生成proxy实例,两个参数都是对象,targetObj是要拦截的目标对象,handlerObj参数用来定制拦截行为 var proxy = new Proxy(targetObj, handlerObj) Reflect:将Object对象一些明显的语言内部的方法,放到Reflect对象上. 修改某些Object的方法使返回更合理 1.规范语言 2.是Proxy对象的修改…
Generator 函数的异步应用 JS异步编程 callback Promise(解决回调地狱) 事件 发布订阅 generator Thunk函数  屁股函数 两次高阶调用的函数 第一次调用的入参作为最终被执行的函数fn,第二次调用的入参解构后和第三次调用的入参(cb)作为最终函数的参数…
前面的话 用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简化数据操作,于是ES6也向JS中添加了这个迭代器特性.新的数组方法和新的集合类型(如Set集合与Map集合)都依赖迭代器的实现,这个新特性对于高效的数据处理而言是不可或缺的,在语言的其他特性中也都有迭代器的身影:新的for-of循环.展开运算符(...),甚至连异步编程都可以使用迭代器 本文将详细介…
深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性.可移植性,代码的可重用性. MVC即Model.View.Controller即模型.视图.控制器.我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里,将数据库访问操作的代码放在Model里. 最终软件(网站)的代码结构是,View层是界面,Con…
迭代模式 ES6迭代器标准化接口 迭代循环 自定义迭代器 迭代器消耗 一.迭代模式 迭代模式中,通常有一个包含某种数据集合的对象.该数据可能存在一个复杂数据结构内部,而要提供一种简单的方法能够访问数据结构中每个元素.对象消费者并不需要知道如何组织数据,所有需要做的就是取出单个数据进行工作. 迭代模式API的设计:通常会设置一个next()方法来获取每个元素:为了方便操作,会设置一个hasNext()方法或者done属性来判断是否已经到达数据的末尾: 基于上面的简单设计思想,假设对象名为agg,可…