转载

Node V6支持的新特性

Node v6已经发布了,它带来了一些性能上的改善,以及对一些新的ES6语言特性的支持。 本文我们来具体的看看哪些特性得到了支持。

相关博文: 关于Node v4你必须知道几个ES6特性

新ES6特性

默认函数参数

你可以为函数的行参提供默认值,如果实参没有被传入时,则使用该默认值。

function multiply(a, b = 1) {     return a * b }  multiply(5) // 5   

参考文档

剩余参数

在函数被调用时,剩余参数表示为一个数组名,该数组包含了那些没有对应形参的,长度不确定的剩余实参。

function fun1(...theArgs) {   console.log(theArgs.length); }   fun1();  // 弹出 "0", 因为theArgs没有元素 fun1(5); // 弹出 "1", 因为theArgs只有一个元素 fun1(5, 6, 7); // 弹出 "3", 因为theArgs有三个元素 

参考文档

展开(Spread)操作符

展开运算符允许一个表达式在某处展开,在多个参数(用于函数调用)或者多个元素(用于数组字面量)或者多个变量(用于解构赋值)的地方就会这样。

// before the spread operator function myFunction(x, y, z) { }   var args = [0, 1, 2]   myFunction.apply(null, args)  // with the spread operator function myFunction(x, y, z) { }   var args = [0, 1, 2]   myFunction(...args)   

参考文档

解构

通过解构赋值,你可以从数组或对象中提取数据赋值给不同的变量。

var x = [1, 2, 3, 4, 5]   var [y, z] = x   console.log(y) // 1   console.log(z) // 2   

参考文档

new.target

new.target属性允许你检测函数或构造方法是否通过是通过new运算符被调用的。 在通过new运算符被初始化的函数或构造方法中,new.target返回一个指向构造方法或函数的引用。 在普通的函数调用中,new.target 的值是undefined。

function Foo() {     if (!new.target) throw new Error('Foo() must be called with new')   console.log('Foo instantiated with new') }  Foo() // throws "Foo() must be called with new"   new Foo() // logs "Foo instantiated with new"   

参考文档

Proxy

Proxy 对象用来为基础操作(例如:属性查找、赋值、枚举、方法调用等)定义用户自定义行为。

var handler = {       get: function(target, name){         return name in target ? target[name] : 37     } };  // - targe: 目标对象,可以是任意类型的对象,比如数组,函数,甚至是另外一个代理对象。 // - handler: 处理器对象,包含了一组代理方法,分别控制所生成代理对象的各种行为。 // var p = new Proxy(target, handler)  var p = new Proxy({}, handler)   p.a = 1   p.b = undefined  console.log(p.a, p.b) // 1, undefined   console.log('c' in p, p.c) // false, 37   

参考文档

Reflect

Reflect 对象提供了若干个能对任意对象进行某种特定的可拦截操作(interceptable operation)的方法。

参考文档

Symbol

Symbol 是一种特殊的、不可变的数据类型,可以作为对象属性的标识符使用。

Symbol("foo") === Symbol("foo"); // false   

参考文档

开始使用Node 6

推荐你使用 nvm , 查看 安装文档 。

nvm install 6 
原文  http://wwsun.github.io/posts/nodejs-v6.html
正文到此结束
Loading...