es6 使用技巧 [tips]
原文地址1 var VS let/const在JavaScript中除了var类型外,我们现在还可以使用let和const两种新类型进行变量声明了。与var不同,let和const类型会按照定义的顺序产生变量,而var在作用域任意位置定义都可。//var 的例子 var snack = 'Meow Mix'; function getFood(food) { if (food) { var snack = 'Friskies'; return snack; }...
3 种不同的原型继承: ES6+ 版本
本文转载自:众成翻译译者:十年踪迹链接:http://www.zcfy.cc/article/425原文:https://medium.com/javascript-scene/3-different-kinds-of-prototypal-inheritance-es6-edition-32d777fa16c9#.q4929515z这篇文章改编自 《Programming JavaScript Applications》 相关章节,我在这基础上扩充了一些内容,并新增了 ES6 部分。为了更好地发挥 Java...
如何在2016年成为一个更好的Node.js开发者[转]
编译自:https://blog.risingstack.com/how-to-become-a-better-node-js-developer-in-2016/ 作者: Gergely Nemeth 转载自: http://wwsun.github.io/posts/become-a-better-node-developer-in-2016.html 译者: 景庄本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员。遵循本...
ECMAScript6教程 模块 Modules (二)
聚合模块有时一个程序包中主模块的代码比较多,为了简化这样的代码,可以用一种统一的方式将其它模块中的内容聚合在一起导出,可以通过这种简单的方式将所有所需内容导入再导出: // world-foods.js - 来自世界各地的好东西 // 导入"sri-lanka"并将它导出的内容的一部分重新导出 export {Tea, Cinnamon} from "sri-lanka"; // 导入"equatorial-guinea&qu...
ECMAScript6教程 模块 Modules (一)
模块基础知识每一个ES6模块都是一个包含JS代码的文件,模块本质上就是一段脚本,而不是用module关键字定义一个模块,但是模块与脚本还是有两点区别:在ES6模块中,无论你是否加入“use strict;”语句,默认情况下模块都是在严格模式下运行。在模块中你可以使用import和export关键字。我们先来讨论export。默认情况下,你在模块中的所有声明相对于模块而言都是寄存在本地的。如果你希望公开在模块中声明的内容,并让其它模块加以使用,你一定要导出这些功能。想要导出模块的功能有很多方法,其中最简单的方式...
ECMAScript6教程 子类 Subclassing
ES6的类系统借鉴了传统的C++和Java中的类系统,它们都支持类继承,子类可以继承父类,并在其基础上扩展更多自己的功能。那就让我们继续今天的文章,进一步发掘这个新特性无穷的潜力吧。在我们开始讨论子类的概念之前,还是再一起巩固一下属性继承和动态原型链的相关知识。JavaScript继承我们在创建对象的时候可以为其添加各种属性,但在这个过程中,新创建的对象同时也继承了原型对象的属性。作为JavaScript开发者,你应该很熟悉Object.create这个API,我们可以用它来创建一些新对象: var p...
ECMAScript6教程 let和const
回溯到1995年,当Brendan Eich在设计第一版JavaScript时,他搞错了许多东西,当然这也包括曾属于语言本身的一部分,例如Date对象,对象相乘被自动转换为NaN等。然而现在回过头看,语言最重要的部分都是设计合理的:对象、原型、具有词法作用域的一等函数、默认情况下的可变性等。语言的骨架非常优秀,甚至超越了人们对它的初步印象。话说回来,正是Brendan当初的设计错误才诞生了今天这篇文章。我们这次关注的目标非常小,在你使用这门语言多年后可能根本不会注意到这个问题,但是它 又如此重要,因为我们可能...
ECMAScript6教程 类 Class
目前面临的问题假如我们想要创建一个经典的面向对象设计示例:Circle类。想象一下我们正在为一个简单的Canvas库编写这个Circle类,在众多需要考虑的因素中,我们可能更想了解以下功能的实现方式:在给定的Canvas上绘制一个给定圆。跟踪记录生成圆的总数。跟踪记录给定圆的半径,以及如何使其值成为圆的不变条件。计算给定圆的面积。按照目前常见的JS编码风格,我们首先应该以函数的形式创建一个构造函数,然后给该函数添加任何我们可能想要的属性,然后用一个对象替换构造函数的prototype属性。这个prototyp...
ECMAScript6教程 代理 Proxies
请看这样一段代码: var obj = new Proxy({}, { get: function (target, key, receiver) { console.log(`getting ${key}!`); return Reflect.get(target, key, receiver); }, set: function (target, key, value, receiver) { console.log...
ECMAScript6教程 集合 Collection
第七版提议已经开始。共同发展中的难题JS和其它编程语言有些特殊的差别,有时,它们会以令人惊奇的方式影响到这门语言的发展。ES6模块就是个很好的例子。其它语言的模块化系统中,Racket做得特别棒,Python也很好。那么,当标准委员会决定在ES6中增加模块时,为什么他们不直接仿照一套已经存在的系统呢?因为JS是不同的,因为它要在浏览器里运行。读取和写入都可能花费较长时间,所以,JS需要一套支持异步加载代码的模块化系统,同时,也不能允许在文件夹中挨个搜索,照搬已有的系统并不能解决问题。ES6的模块化系统需要一些...