随笔分类 - ES6知识
摘要:一、Object.fromEntries() 用法 Object.fromEntries() 方法把键值对列表转换为一个对象。 1、语法:Object.fromEntries(iterable); 参数:iterable,类似 Array 、 Map 或者其它实现了可迭代协议的可迭代对象。 返回值:
阅读全文
摘要:一、ES6 Promise是什么? 复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么呢?是一个类?对象?数组?函数? 别猜了,直接打印出来看看吧,console.dir(Promise),就这么简单粗暴。 这么一看就明白了,Promis
阅读全文
摘要:一、概述 async 函数是 Generator 函数的语法糖 使用Generator 函数,依次读取两个文件代码如下 写成async函数,就是下面这样 async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已 async函数对 Genera
阅读全文
摘要:一、内建迭代器 迭代器是ES6的一个重要组成部分,在ES6中,已经默认为许多内建类型提供了内建迭代器,只有当这些内建迭代器无法实现目标时才需要自己创建。通常来说当定义自己的对象和类时才会遇到这种情况,否则,完全可以依靠内建的迭代器完成工作,而最常使用的可能是集合的那些迭代器 1、集合对象迭代器 在E
阅读全文
摘要:用循环语句迭代数据时,必须要初始化一个变量来记录每一次迭代在数据集合中的位置,而在许多编程语言中,已经开始通过程序化的方式用迭代器对象返回迭代过程中集合的每一个元素 迭代器的使用可以极大地简化数据操作,于是ES6也向JS中添加了这个迭代器特性。新的数组方法和新的集合类型(如Set集合与Map集合)都
阅读全文
摘要:JS用"共享一切"的方法加载代码,这是该语言中最易出错且容易令人感到困惑的地方。在ES6以前,在应用程序的每一个JS中定义的一切都共享一个全局作用域。随着web应用程序变得更加复杂,JS代码的使用量也开始增长,这一做法会引起问题,如命名冲突和安全问题。ES6的一个目标是解决作用域问题,也为了使JS应
阅读全文
摘要:修饰器(Decorator)是一个函数,用来修改类的行为。 一、概述 ES6 引入了这项功能,目前 Babel 转码器已经支持Decorator 首先,安装babel-core和babel-plugin-transform-decorators。由于后者包括在babel-preset-stage-0
阅读全文
摘要:继承与派生类 在ES6之前,实现继承与自定义类型是一个不小的工作。严格意义上的继承需要多个步骤实现 Square继承自Rectangle,为了这样做,必须用一个创建自Rectangle.prototype的新对象重写Square.prototype并调用Rectangle.call()方法。JS新手
阅读全文
摘要:大多数面向对象的编程语言都支持类和类继承的特性,而JS却不支持这些特性,只能通过其他方法定义并关联多个相似的对象,这种状态一直延续到了ES5。由于类似的库层出不穷,最终还是在ECMAScript 6中引入了类的特性。 一、ES5近似结构 在ES5中没有类的概念,最相近的思路是创建一个自定义类型:首先
阅读全文
摘要:我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段。在ES6中添加了可以简化这种任务的新特性:解构。解构是一种打破数据结构,将其拆分为更小部分的过程。 一、引入背景 在ES5中,开发者们为了从对象和数组中获取特定数据并赋值给变量,编写了许多看起来同质化的代码 这段代码从options对象
阅读全文
摘要:过去,javascript缺乏块级作用域,var声明时的声明提升、属性变量等行为让人困惑。ES6的新语法可以帮助我们更好地控制作用域。 一、var声明 1、变量提升:var声明会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined 如果没有javascript开发经验,可能会认为只
阅读全文
摘要:Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构。ES6也添加了Map集合来解决类似的问题 一、Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制 为了解决这个问题,ES6提供了Map数据结构
阅读全文
摘要:一、引入背景 Set集合是一种无重复元素的列表,开发者们一般不会逐一读取数组中的元素,也不太可能逐一访问Set集合中的每个元素,通常的做法是检测给定的值在某个集合中是否存在 Map集合内含多组键值对,集合中每个元素分别存放着可访问的键名和它对应的值,Map集合经常被用于缓存频繁取用的数据。在标准正式
阅读全文
摘要:ES5中包含5种原始类型:字符串、数值、布尔值、null、undefined。ES6引入了第6种原始类型——Symbol。 ES5的对象属性名都是字符串,很容易造成属性名冲突。比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突。如果有一种机制保证每个属性
阅读全文
摘要:一、静态方法 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面量语法,这两种方法均需列举数组中的元素,功能非常受限。如果想将一个类数组对象(具有数值型索引和length属性的对象)转换为数组,可选的方法也十分有限,经常需要编写额外的代码。为了进一步简化JS数组
阅读全文
摘要:一、对象类别 在浏览器这样的执行环境中,对象没有统一的标准,在标准中又使用不同的术语描述对象,ES6规范清晰定义了每一个类别的对象,对象的类别如下 1、普通(Ordinary)对象:具有JS对象所有的默认内部行为 2、特异(Exotic)对象:具有某些与默认行为不符的内部行为 3、标准(Standa
阅读全文
摘要:一、箭头函数 在ES6中,箭头函数是其中最有趣的新增特性。顾名思义,箭头函数是一种使用箭头(=>)定义函数的新语法,但是它与传统的JS函数有些许不同,主要集中在以下方面: 1、没有this、super、arguments和new.target 绑定箭头函数中的this、super、arguments
阅读全文
摘要:一、构造函数 Function构造函数是JS语法中很少被用到的一部分,通常我们用它来动态创建新的函数。这种构造函数接受字符串形式的参数,分别为函数参数及函数体 ES6增强了Function构造函数的功能,支持在创建函数时定义默认参数和不定参数。唯一需要做的是在参数名后添加一个等号及一个默认值 定义不
阅读全文
摘要:一、形参默认值 Javascript函数有一个特别的地方,无论在函数定义中声明了多少形参,都可以传入任意数量的参数,也可以在定义函数时添加针对参数数量的处理逻辑,当已定义的形参无对应的传入参数时为其指定一个默认值 ES5模拟:在ES5中,一般地,通过下列方式创建函数并为参数设置默认值 在这个示例中,
阅读全文
摘要:一、new Function() 语法 1、学习《ECMAScript6入门》中的模板字符串的案例中看见了new Function()创建函数的语法: let str = 'return ' + '`Hello ${name}!`'; let func = new Function('name',
阅读全文