ES6新增特性(二)

默认参数

function show(a,b=5,c=12){
  console.log(a,b,c);
}
show(99,19)    //99,19,12
show(99)    //99,5,12

for of循环

//for in
var arr=['apple','banana','orange','pear']
for(var i in arr){    
    console.log(i); 
    // for in 出来的是 索引0 1 2 3
} 
//for of
var arr=['apple','banana','orange','pear']
for(var i of arr){
    console.log.(i); 
    // for of 出来的是 实际apple,banana等
}

for of可以循环数组,但是不能循环json,因为它是为了与map配合使用

Map(数据结构)

与for of配合使用,是一个key、value

var map = new Map();
map.set(name,value); 
// 可以设置name,value 
map.get(name); 
// 可以单独获取name 
map.delete(name); 
// 可以单独删除name 
//与for of 的配合
for(var name of map){
    console.log(name);  
    // a,apple   b,banana
} 

for(var [key,value] of map){
    console.log(key,value); 
    // key,value
} 

for(var key of map.keys) // 可以只循环map中的key值

map(数组)

映射–原数组映射成新数组,一个对应一个

//例一
   let arr=[12,5,8];
   let result=arr.map(item=>item*2);
   alert(result); 
//例二 
   let score=[19, 85, 99, 25, 90];
   let result=score.map(item=>item>=60?'及格':'不及格');
   alert(score); 
   alert(result);

reduce(数组)

汇总–求和–多个变成一个

//求和
    let arr=[12,69,180,8763];
    let result=arr.reduce(function (tmp, item, index){
      //alert(tmp+','+item+','+index); 
     return tmp+item; 
   });
     alert(result); //求平均数
    let arr=[12,69,180,8763];
    let result=arr.reduce(function (tmp, item, index){
      if(index!=arr.length-1){
     //不是最后一次
        return tmp+item;
   }else{
         //最后一次
        return (tmp+item)/arr.length;
     }    
});     
alert(result);

filter(数组)

过滤器

    let arr=[12,5,8,99,27,36,75,11];    //选择能够被3整除的数    
    let result=arr.filter(item=>item%3==0);
   alert(result);

forEach(数组)

循环–迭代

let arr=[12,5,8,9];
arr.forEach((item,index)=>{
      alert(index+': '+item);
});

面向对象class

  1. 使用了class关键字,现在构造函数和类分开了
  2. class里面直接加方法
//old
    function User(name, pass){
      this.name=name;
      this.pass=pass;
    }
    User.prototype.showName=function (){
      alert(this.name);
    };
    User.prototype.showPass=function (){
      alert(this.pass);
    };
 
//ES6
    class User{
      constructor(name, pass){
        this.name=name;
        this.pass=pass;
      }
      showName(){
        alert(this.name);
      }
      showPass(){
        alert(this.pass);
      }
    }
      alert(this.name);
    };
    User.prototype.showPass=function (){
      alert(this.pass);
    }; 
//ES6
    class User{
      constructor(name, pass){
        this.name=name;
        this.pass=pass;
      }
      showName(){
        alert(this.name);
      }
      showPass(){
        alert(this.pass)
;      }    }

继承extends

old: 子类.prototype = new 父类
ES6: class 子类 extends 父类{}

版权声明:
作者:广州前端开发
链接:https://www.develophm.com/index.php/hello-world/1/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>