随笔分类 - es6
摘要:接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般都有Symbol.iterator属性,你可以在控制台中用console.dir打印数组,Map,S
阅读全文
摘要:什么是迭代器? 迭代器是一种特殊对象,这种对象具有以下特点: 1,所有对象都有一个next方法 2,每次调用next方法,都会返回一个对象,该对象包含两个属性,一个是value, 表示下一个将要返回的值。另一个是done,他是一个布尔值,用来表示该迭代器是否还有数据可以返回. 3,迭代器还会保存一个
阅读全文
摘要:ECMAScript 6中的Map类型是一种存储着许多键值对的有序列表。键值对支持所有的数据类型. 键 0 和 ‘0’会被当做两个不同的键,不会发生强制类型转换. 如何使用Map? let map = new Map(); 常用方法: set( 键,值 ): 添加新的键值对元素 get( 键 ):
阅读全文
摘要:我们还是从一些现有的需求和问题出发,为什么会有set,他的存在是为了解决什么问题? 我们看一个这样的例子,为一个对象添加键值对 以null为原型对象,创建一个对象,给对象添加一个数字键5, 在输出的时候,数字键5会自动转换成字符键"5",这样的自动类型转换,会产生很多隐式问题. 上面这个程序中,空对
阅读全文
摘要:关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下promise的常见用法. 为什么会有promise,他的作用是什么? promise主要是为了解决js中
阅读全文
摘要:es5的构造函数前面如果不用new调用,this指向window,对象的属性就得不到值了,所以以前我们都要在构造函数中通过判断this是否使用了new关键字来确保普通的函数调用方式都能让对象复制到属性 在es6中,为了识别函数调用时,是否使用了new关键字,引入了一个新的属性new.target:
阅读全文
摘要:其实es6的面向对象很多原理和机制还是ES5的,只不过把语法改成类似php和java老牌后端语言中的面向对象语法. 一、用es6封装一个基本的类 是不是很向php和java中的类, 其实本质还是原型链,我们往下看就知道了 首先说下语法规则: class Person中的Person就是类名,可以自定
阅读全文
摘要:解构通俗点说,就是通过一种特定格式,快捷的读取对象/数组中的数据的方法, es6之前,我们通过对象名称[键] 读取数据 上面第5行就是一个简单的数据解构过程: 1,右边如果是对象,左边解构的语法也要用对象格式, 如果解构的数据是数组,左边就用数组格式 2,name, age是局部变量 3,解构出来的
阅读全文
摘要:三个点(...)在es6中,有两个含义: 用在形参中, 表示传递给他的参数集合, 类似于arguments, 叫不定参数. 语法格式: 在形参面前加三个点( ... ) 用在数组前面,可以把数组的值全部打散,展开,叫展开运算符. 语法格式: 在数组面前加三个点( ... ) 求不定参数的和,以前可以
阅读全文
摘要:在ES6之前,我们一般用短路表达式处理默认参数 短路表达式(就是上例中的 || )的运算规则是: var res = a || 20; 如果a是true 就返回a, 如果a是false就返回20; 上述例子中, 第八行代码,本意是输出0, 0, 结果0被当做false, 在传递参数0的时候,输出了后
阅读全文
摘要:第一:字面量对象的方法,支持缩写形式 方法缩写规则: 在原来的基础上去掉 冒号 和 function关键字 第二:对象中的属性与变量名或者参数 同名的时候, 可以省略赋值的操作 上面例子中的写法,可以简写为: 如果同时出现同名参数和let定义的同名变量时候,会报语法错误,如果不知道为什么,请看下我之
阅读全文
摘要:箭头函数是es6新增的非常有意思的特性,初次写起来,可能会觉得别扭,习惯之后,会发现很精简. 什么是箭头函数? 箭头函数是一种使用箭头( => )定义函数的新语法, 主要有以下特性: 不能通过new关键字调用 没有原型, 因为不能通过new调用,所以没有原型 没有this, super,argume
阅读全文
摘要:我们从es5的变量提升开始说起, 由于变量提升的原因, 上述程序, 在第2行和第7行都能访问到a的值, 只不过是undefined, 如果你不熟悉javascript这种变量的预解释机制,可能会认为第2行和第7行会报错, 只有flag为true的时候,变量a才声明了, 其实javascript在词法
阅读全文