JavaScript6有哪些新功能?下面我们来看看JavaScript6的一些新特性。让[s,v,o]=triple();(前提是让pt={x:2,y:-5})默认参数值:functionf(x,y=1,z=0){...}其他参数:functiong(i,j,...r){返回r.slice(i,j);}(不再需要使用参数)。数据扩展:令a=[0,1,2,3],o=newSomething(...a);。也可用于数组文字:[1,...array,4]。对象简写:letone=1;{one,func_one(){return1;},['key'+one]:1}。函数简写(a)=>a*a等价于(function(a){returna*a;}).bind(this)map,set:letm=newMap();m.set(键,值);m.有(钥匙);m.get(键)。还包括.clear()、.delete()、.forEach()、.keys()。弱映射:让map=newWeakMap()。当有循环引用时使用它。newWeakSet()也是如此。承诺:新承诺((解决,拒绝)=>{...})。当promise.then(value=>{…})时,resolve(valueOrPromise)返回promise的值(或新的promise,形成链式调用)当promise.then(...).then(...).catch(error=>{...})reject(newError(...))中断promise快速promise创建:Promise.resolve(value),Promise.reject(error).Iteration:Promise.all(listOfPromises).then(listOfValues=>...),Promise.race(listOfPromises).then(valueThatResolvedFirst=>...)代理:让obj=newProxy(proto,handler)。简单地说:用类对象的元素重载(能够带上所有可访问的属性。)Generator:function*gen(){yield1;产量2;事实上,gen()将返回一个包含next()对象的函数。循环:for(var[key,val]ofitems(x)){alert(key+','+val);}.在类定义中使用extends、super和static:classPointextendsBase{constructor(x,y){super();this[px]=x,this[py]=y;this.r=function(){returnMath.sqrt(x*x+y*y);}}getx(){returnthis[px];}gety(){returnthis[py];}proto_r(){returnMath.sqrt(this[px]*this[px]+this[py]*this[py]);}equals(p){returnthis[px]===p[px]&&this[py]===p[py];}}符号(Symbol)对象,创建一个私钥,可用于映射和类(私有成员)。leta=Map();{letk=Symbol();a.set(k,'value');//这里可以访问和设置'value',比如a.get(k)。}//这里没有,k是不可见的。模块化:modulemath{exportfunctionsum(x,y){returnx+y;}exportvarpi=3.141593;}import{sum,pi}frommath;alert(sum(pi,pi));可以嵌入变量。`你是${age}岁。`.//多行字符串re`line1:(words)*line2:\w+`//Itdesugarsto:re({raw:'line1:(words)*\nline2:\w+',cooked:'line1:(words)*\nline2:\w+'})类型化数组语言规范:http://people.mozilla.org/~jorendorff/es6-draft.html语言规范提案:http://wiki.ecmascript.org/doku.php?id=harmony:proposals
