0

Node V6支持的新特性

Posted by 撒得一地 on 2016年5月14日 in 杂谈

Node v6已经发布了,它带来了一些性能上的改善,以及对一些新的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

上一篇:

下一篇:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

9 + 6 = ?

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.