ES6
lgh1117
这个作者很懒,什么都没留下…
展开
-
深入浅出ES6(一):ES6是什么
欢迎来到ES6深入浅出!JavaScript的新版本离我们越来越近,我们将通过每周一节的系列课程一起探索ECMAScript 6新世界。ES6中包含了许多新的语言特性,它们将使JS变得更加强大,更富表现力。在接下来的几周内,我们将一一深入了解它们。但在我们开始详细学习之前,我认为十分有必要花几分钟讲解一下ES6到底是什么,以及你可以从中学到什么!ECMAScript发生了什么变化?编程语言转载 2016-04-28 22:50:21 · 1758 阅读 · 0 评论 -
深入浅出ES6(十六):模块 Modules
模块基础知识每一个ES6模块都是一个包含JS代码的文件,模块本质上就是一段脚本,而不是用module关键字定义一个模块,但是模块与脚本还是有两点区别:在ES6模块中,无论你是否加入“use strict;”语句,默认情况下模块都是在严格模式下运行。在模块中你可以使用import和export关键字。我们先来讨论export。默认情况下,你在模块中的所有声明相对于模块而言都是寄存在本转载 2016-04-30 11:27:36 · 1082 阅读 · 0 评论 -
深入浅出ES6(十五):子类 Subclassing
JavaScript继承我们在创建对象的时候可以为其添加各种属性,但在这个过程中,新创建的对象同时也继承了原型对象的属性。作为JavaScript开发者,你应该很熟悉Object.create这个API,我们可以用它来创建一些新对象: var proto = { value: 4, method() { return 14; } } v转载 2016-04-30 11:21:52 · 604 阅读 · 0 评论 -
深入浅出ES6(十四):let和const
回溯到1995年,当Brendan Eich在设计第一版JavaScript时,他搞错了许多东西,当然这也包括曾属于语言本身的一部分,例如Date对象,对象相乘被自动转换为NaN等。然而现在回过头看,语言最重要的部分都是设计合理的:对象、原型、具有词法作用域的一等函数、默认情况下的可变性等。语言的骨架非常优秀,甚至超越了人们对它的初步印象。话说回来,正是Brendan当初的设计错误才诞生了今天转载 2016-04-30 11:16:48 · 719 阅读 · 0 评论 -
深入浅出ES6(十三):类 Class
目前面临的问题假如我们想要创建一个经典的面向对象设计示例:Circle类。想象一下我们正在为一个简单的Canvas库编写这个Circle类,在众多需要考虑的因素中,我们可能更想了解以下功能的实现方式:在给定的Canvas上绘制一个给定圆。跟踪记录生成圆的总数。跟踪记录给定圆的半径,以及如何使其值成为圆的不变条件。计算给定圆的面积。按照目前常见的JS编码风格,我们首先应该以函数的形式转载 2016-04-30 11:09:01 · 819 阅读 · 0 评论 -
深入浅出ES6(十二):代理 Proxies
请看这样一段代码: var obj = new Proxy({}, { get: function (target, key, receiver) { console.log(`getting ${key}!`); return Reflect.get(target, key, receiver); }, set: fu转载 2016-04-30 11:05:20 · 703 阅读 · 0 评论 -
深入浅出ES6(十一):生成器 Generators,续篇
快速回顾在第三篇文章中,我们着重讲解了生成器的基本行为。你可能对此感到陌生,但是并不难理解。生成器函数与普通函数有很多相似之处,它们之间最大的不同是,普通函数一次执行完毕,而生成器函数体每次执行一部分,每当执行到一个yield表达式的时候就会暂停。尽管在那篇文章中我们进行过详细解释,但我们始终未把所有特性结合起来给大家讲解示例。现在就让我们出发吧! function* somew转载 2016-04-30 11:01:03 · 589 阅读 · 0 评论 -
深入浅出ES6(十):集合
为什么要集合?熟悉JS一定会知道,我们已经有了一种类似哈希表的东西:对象(Object)。一个普通的对象毕竟就只是一个开放的键值对集合。你可以进行获取、设置、删除、遍历——任何一个哈希表支持的操作。所以我们到底为什么要增加新的特性?好吧,大多数程序简单地用对象来存储键值对就够了,对它们而言,没什么必要换用Map或Set。但是,直接这样使用对象有一些广为人知的问题:作为查询表使用转载 2016-04-30 10:58:19 · 1878 阅读 · 0 评论 -
深入浅出ES6(四):模板字符串
反撇号(`)基础知识ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings)。除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与普通字符串并无二致。在最简单的情况下,它们与普通字符串的表现一致:context.fillText(`Ceci n'est pas une chaîne.`, x, y);但是我们并没有说:“原来转载 2016-04-28 23:00:55 · 24637 阅读 · 6 评论 -
深入浅出ES6(九):学习Babel和Broccoli,马上就用ES6
自ES6正式发布,人们已经开始讨论ES7:未来版本会保留哪些特性,新标准可能提供什么样的新特性。作为Web开发者,我们想知道如何发挥这一切的巨大能量。在深入浅出ES6系列之前的文章中,我们不断鼓励你开始在编码中加入ES6新特性,辅以一些有趣的工具,你完全可以从现在开始使用ES6:如果你想在Web端使用这种新语法,你可以通过Babel或Google的Traceur将你的ES6代码转译为Web转载 2016-04-28 23:25:59 · 774 阅读 · 0 评论 -
深入浅出ES6(八):Symbols
你是否知道ES6中的Symbols是什么,它有什么作用呢?我相信你很可能不知道,那就让我们一探究竟!Symbols并非用来指代某种Logo。它们也不是可以用作代码的小图标。它们不是代替其它东西的文学手法。它们更不可能被用来指代谐音词Cymbals(铙钹)。(编程的时候最好不要演奏铙钹,它们太过吵闹,很可能导致你的程序崩溃。)那么,Symbols到底是什么呢?它是转载 2016-04-28 23:14:09 · 726 阅读 · 0 评论 -
深入浅出ES6(七):箭头函数 Arrow Functions
箭头符号在JavaScript诞生时就已经存在,当初第一个JavaScript教程曾建议在HTML注释内包裹行内脚本,这样可以避免不支持JS的浏览器误将JS代码显示为文本。你会写这样的代码: script language="javascript"> <!-- document.bgColor = "brown"; // red // --> scr转载 2016-04-28 23:11:38 · 774 阅读 · 0 评论 -
深入浅出ES6(六):解构 Destructuring
什么是解构赋值?解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性赋给各种变量。这种赋值语法极度简洁,同时还比传统的属性访问方法更为清晰。通常来说,你很可能这样访问数组中的前三个元素: var first = someArray[0]; var second = someArray[1]; var third = someArray[2];如果使用转载 2016-04-28 23:08:49 · 2466 阅读 · 0 评论 -
深入浅出ES6(五):不定参数和默认参数
不定参数我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数。例如,String.prototype.concat方法就可以接受任意数量的字符串参数。ES6提供了一种编写可变参函数的新方式——不定参数。我们通过一个简单的可变参数函数containsAll给大家演示不定参数的用法。函数containsAll可以检查一个字符串中是否包含若干个子串,例如:containsAll("转载 2016-04-28 23:02:48 · 10112 阅读 · 2 评论 -
深入浅出ES6(三):生成器 Generators
ES6生成器(Generators)简介什么是生成器?我们从一个示例开始:function* quips(name) { yield "你好 " + name + "!"; yield "希望你能喜欢这篇介绍ES6的译文"; if (name.startsWith("X")) { yield "你的名字 " + name + " 首字母是X,这很酷!"; }转载 2016-04-28 22:57:43 · 697 阅读 · 0 评论 -
深入浅出ES6(二):迭代器和for-of循环
我们如何遍历数组中的元素?20年前JavaScript刚萌生时,你可能这样实现数组遍历:for (var index = 0; index myArray.length; index++) { console.log(myArray[index]);}自ES5正式发布后,你可以使用内建的forEach方法来遍历数组:myArray.forEach(function (valu转载 2016-04-28 22:52:26 · 1825 阅读 · 0 评论 -
深入浅出ES6(十七):展望未来
你可能正在使用的特性ES6除了新增特性外还有两类特殊的特性:其中一些特性早已被各大厂商广泛实现并使用,但是它们并没有被标准化;还有一些特性采自过去其它的标准。定型数组(Typed arrays)、数组缓冲(ArrayBuffer)和数据视图(DataView)。这些特性全都来自WebGL标准,自这些特性出现后也被陆续用于实现许多其它的API,例如Canvas、Web Audio转载 2016-04-30 11:33:01 · 703 阅读 · 0 评论