ES6-掌握这些足矣

1.什么是ES6
在此不做过多赘述,想要了解的小伙伴参考http://www.infoq.com/cn/articles/es6-in-depth-an-introduction

2.如何使用呢

    <script src="traceur.js"></script>
    <script src="bootstrap.js"></script>
    <script type="module">
        //code
    </script>

没错就是这么简单,其中看到bootstrap.js不要惊讶这跟我们熟知的bootstrap css框架没有任何关系。

3.ES6有哪些功能呢
①定义变量let
由let来代替var,其拥有块级作用域,举两个小例子:

{
    var a=11;
    let b=12;
}
console.log(a);//11
console.log(b);//b is not defined(因为全局没法调用块级区域的变量)
var a=[];
for(var i=0;i<10;i++){
    a[i]=function(){
       console.log(i);
    };
}
a[6](); //10(调用a多少都是10)
        
        
var b=[];
for(let i=0;i<10;i++){
    b[i]=function(){
        console.log(i);
    };
}
b[6]();    //6(调用b几就是几)

②定义常量const
顾名思义,所谓常量就是不可修改,一旦修改会报错误的。

③模板引擎(说人话就是字符串连接)
用法就是Tab键上面的那个反引号,举个小例子:

var str='世间安得双全法';//这里是正常的单引号
var str2=`${str},不负如来不负卿`;//而这里是反引号

④解构赋值
举个小例子立马秒懂:

var [a,b,c]=['爱猫','爱狗','爱康康'];
console.log(a+b+c);//爱猫爱狗爱康康

对!你没看错,就是这么简单粗暴的给一组家伙赋值了。

⑤ES6小技巧
I.数组复制
a)var arr2 = Array.from(arr);简单,然而↓
b)var arr2 = [...arr]就是耍流氓,就是这么丧心病狂。
II.for of循环(和map紧密配合使用)
III.map和delete
a)map来个小例子尝尝鲜

var map = new Map();
map.set('a','apple');
map.set('b','banana');
map.set('c','cherry');
for(var key of map.keys()){
    console.log(key);//a b c
}
for(var val of map.values()){
    console.log(val);//apple banana cherry
}
for(var [key,value] of map.entries()){
    console.log(key,value);//a apple     b banana     c cherry
}

b)delete同样来个小例子:

var json = {a:12,b:5};
delete json.a;
console.log(json);//Object {b: 5}

⑥箭头函数,★这是一个重点哦★
箭头函数下,arguments是不能使用的;
再说个小结论,匿名函数根据参数不同情况有所不同,如下:
(parameter) => { … }//parameter是参数
当没有参数时:() => { … }
当一个参数时:parameter => { … }
当多个参数时:(parameter1,parameter2) => { … }
非匿名函数也简单就是在前面加上fnName =就可以了,不过需要注意的是『函数名后面的=两边必须加上一个空格』。
来个简单小应用:

var arr = [9,8,7,1,2,3,5,4,6];
arr.sort((n1,n2)=>n1-n2);//用sort方法写的一个正排序函数
alert(arr);//1,2,3,4,5,6,7,8,9

这里arr.sort((n1,n2)=>n1-n2);还原成ES5写法就是arr.sort(function(n1,n2){return n1 - n2;});细心的小伙伴应该发现了,这箭头函数默认return了。

⑦对象(也就是单例模式)

var name='vikang';
var person={
    name,
    showName:function(){
        return this.name;
    }
}
alert(person.showName());//vikang

⑧类(就是面向对象),★非常重要★,不懂这个和箭头函数的话,完全看不懂angular2.x是在干什么。废话不多说,吃个栗子:(注意一下,这里面的this是没问题O__O'''…)

class Person{
    constructor(name,age){
        this.name=name;
        this.age=age;
    }
    showName(){
        return this.name;
    }
    showAge(){
        return this.age;
    }
}
var person1=new Person('vikang',25);
alert(person1.showAge());//25

提到类就不得不说一个很重要的东西,那就是继承,而且很简单那就是用extend,如下:

class Person{
    constructor(name,age){
        this.name=name;
        this.age=age;
    }
    showName(){
        return this.name;
    }
    showAge(){
        return this.age;
    }
}
//继承如下
class Message extends Person{
     constructor(name,age,sex){
        //super这里需要把Person的参数传过来,可以用arguments来代替
        super(name,age);
        this.sex=sex;
    }
    showSex(){
        return this.sex;
    }
}
var message1=new Message('vikang',25,'男');
alert(message1.showSex());//男

然后就是模块的相关问题,ES6自带模块化。就不再用seajs和require.js这种模块化工具了。
a)定义导出:
写一个1.js文件如下

const a =1;
export default a;

同一个模块导出多个值的话如下

export default {a:12,b:5};

b)导入使用:

import  modA  from './1.js';
alert(modA);//1

⑨promise--就是一个对象,传递异步的操作数据和消息。

var p1=new Promise(function(resolve,rejected){
    resolve('success');
    rejected('fail');
});
    p1.then(function(value){
        alert('成功'+value);
    },function(value){
        alert('失败'+value);
})
//界面弹出:成功success

再来一个就会看的更清楚了

var p1=new Promise(function(resolve,rejected){
    resolve('success');
});
p1.then(function(value){
    console.log('成功'+value);        //成功success
    return 'you will '+value;
}).then(function(value){
    console.log(value);        //you will success
    return value+' !';
}).then(function(value){
    console.log(value);        //you will success !
    return value;
}).then(function(value){
    alert(value.split(' ').join('_'));    //you_will_success_!
})

⑩Gennerator(生成器),语法还是很简单的需要注意以下几点 :
a)函数名的去前面加上*
b)函数你不使用yield
c)执行下一个状态用next
ok来个简单的例子:

function *show(){
    yield 'you ';
    yield 'will ';
    yield 'success ';
    yield '!';
    return 'yes';
};
var res=show();
console.log(res.next());    //Object {value: "you ", done: false}
console.log(res.next());    //Object {value: "will ", done: false}
console.log(res.next());    //Object {value: "success ", done: false}
console.log(res.next());    //Object {value: "!", done: false}
console.log(res.next());    //Object {value: "yes", done: true}

不知不觉,这么多东西诶,ES6的话,这些基本够用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容