为了账号安全,请及时绑定邮箱和手机立即绑定

ES6快速入门

快乐动起来呀 Web前端工程师
难度初级
时长 1小时25分
学习人数
综合评分9.27
106人评价 查看评价
9.5 内容实用
9.1 简洁易懂
9.2 逻辑清晰
  • 可变参数的处理

    查看全部
    0 采集 收起 来源:默认参数

    2019-02-20

  • ES6默认参数的使用

    查看全部
    0 采集 收起 来源:默认参数

    2019-02-19

  • 作用域,闭包的理解。很重要

    查看全部
    0 采集 收起 来源:作用域

    2019-02-18

  • 箭头函数中的this指向的是'定义时this的指向',普通函数的是调用时指向。

    查看全部
    0 采集 收起 来源:箭头函数

    2019-02-18

  • 本门课知识总结(ES6与ES5的对比学习):

    1. 常量:在 ES6 中定义常量时,只需要将 var 变成 const 即可,详情如下:

    // ES5 常量写法

    Object.defineProperty(window, 'PI2', {

    value: 3.1415926,

    writable: false,

    });

    console.log('PI2', window.PI2);


    // ES6 常量写法

    const PI3 = 3.14;

    console.log('PI3', PI3);

    // 报错 "PI3" is read-only

    // PI3 = 4;


    2.作用域:(使用let 定义局部变量)

    // ES5 中

    var callbacks = [];

    for(var i=0;i<=2;i++) {

    callbacks[i] = function(){

    return i *2;

    };

    }

    console.table([

    callbacks[0](),

    callbacks[1](),

    callbacks[2]()

    ]);


    // ES6 中的闭包

    const callbacks2 = [];

    for(let j=0;j<=2;j++) {

    callbacks2[j] = function(){

    return j *2;

    }

    };

    console.table([

    callbacks2[0](),

    callbacks2[1](),

    callbacks2[2]()

    ]);


    // ES5 作用域

    ((function(){

    const foo = function(){

    return 1;

    };

    console.log('foo()===1', foo()===1);

    ((function(){

    const foo = function(){

    return 2;

    }

    console.log('foo()===2', foo()===2);

    })())

    })());


    // ES6 作用域

    {

    const foo2 = function(){

    return 3;

    };

    console.log('foo2()===3', foo2()===3);

    {

    const foo2 = function(){

    return 4;

    };

    console.log('foo2()===4', foo2()===4);

    }

    console.log('foo2()===3', foo2()===3);

    }

    3.箭头函数:(箭头函数的 this  指向定义时的对象,ES3, ES5 this 指向该函数被调用的对象)

    // ES5 箭头函数

    {

    var evens = [1, 2, 3, 4, 5];

    var odds = evens.map(function(el) {

    return el + 1;

    });

    console.log('evens', evens);

    console.log(' odds', odds);

    }


    // ES6 箭头函数

    {

    let evens1 = [1, 2, 3, 4, 5];

    let odds1 = evens1.map( el => el + 1);

    console.log('evens1', evens1);

    console.log(' odds1', odds1);

    }


    {

    // ES3, ES5 this 指向该函数被调用的对象

    var factory = function() {

    this.a = 'a';

    this.b = 'b';

    this.c = {

    a: 'a+',

    b: function() {

    return this.a;

    }

    };

    };

    console.log((new factory()).c.b());

    }


    // ES6 this 指向定义时的对象

    {

    var factory = function() {

    this.a = 'a';

    this.b = 'b';

    this.c = {

    a: 'a+',

    b: ()=> this.a

    };

    };

    console.log((new factory()).c.b());

    }

    4.默认参数:(默认参数设置更加便捷,其中 ... params 表示数组 params 的展开后结果)

    // ES3,ES5中默认参数

    {

    function f(x, y, z) {

    if(y === undefined) {

    y = 10;

    }

    if(z === undefined) {

    z = 100;

    }

    return x + y + z;

    }

    console.log(f(1, 20));

    }


    // ES6 默认参数

    {


    function f1(x, y = 10, z = 100) {

    return x + y + z;

    }

    console.log(f1(3, 20));

    }


    // ES6 使用默认参数抛出异常

    {

    function checkParameter() {

    throw new Error('can\'t be empty');

    }

    function f3(x = checkParameter(), y= 10, z = 100) {

    return x + y + z;

    }

    // f3();

    try{

    f3();

    } catch(e) {

    console.log(e);

    }

    }

    // ES3,ES5可变参数

    {

    function sum() {

    var arr = Array.prototype.slice.call(arguments);

    return arr.reduce( function(prev, curr){

    return prev + curr;

    },0);

    }

    console.log(sum(10,2,3,4,5));

    }


    // ES6可变参数

    {

    function sum1(...arr) {

    return arr.reduce((pre, cur) => pre + cur);

    }

    console.log('sum1', sum1(1000, 200, 30, 4));

    }

    // ES5 合并数组

    {

    var params = ['hello', true, 7];

    var other = [3, 4].concat(params);

    console.log('other', other);

    }

    // ES6 合并数组

    {

    var params1 = ['world', false , 8];

    var other1 = [10, 20, ... params];

    console.log('other1', other1);

    }

    5.对象代理:(通过 Proxy 代理对象,让对象读取与修改更加快捷)

    // ES3,ES5 数据保护

    {

    var Person = function() {

    var data = {

    name: 'es3',

    sex: 'male',

    age: 15

    };

    this.get = function(key) {

    return data[key];

    };

    this.set = function(key, value) {

    if(key !== 'sex') {

    data[key] = value;

    }

    };

    };

    // 创建实例

    var person = new Person();

    // 读取数据

    console.table({

    name: person.get('name'),

    sex: person.get('sex'),

    age: person.get('age')

    });

    // 修改数据

    person.set('name', 'es3-1');

    // 读取数据

    console.table({

    name: person.get('name'),

    sex: person.get('sex'),

    age: person.get('age')

    });

    // 修改性别

    person.set('sex', 'female');

    // 读取数据

    console.table({

    name: person.get('name'),

    sex: person.get('sex'),

    age: person.get('age')

    });


    }


    // ES5

    {

    console.log('\n\nes5');

    var Person1 = {

    name: 'es5',

    age: 16

    };

    Object.defineProperty(Person1, 'sex', {

    writable:false,

    value: 'male'

    });

    console.table({

    name: Person1.name,

    age: Person1.age,

    sex: Person1.sex

    });

    Person1.name = 'es5-1';

    console.table({

    name: Person1.name,

    age: Person1.age,

    sex: Person1.sex

    });

    try{

    // 修改只读属性会报错

    Person1.sex = 'female';

    console.table({

    name: Person1.name,

    age: Person1.age,

    sex: Person1.sex

    });


    }catch (e) {

    console.log(e);

    }

    }


    // ES6

    {

    let Person2 = {

    name: 'es6',

    sex: 'male',

    age: 17

    };

    let person2 = new Proxy(Person2, {

    get(target, key) {

    return target[key];

    },

    set(target, key, value) {

    if(key !== 'sex') {

    return (target[key] = value);

    }

    }

    });

    console.table({

    name: person2.name,

    sex: person2.sex,

    age: person2.age

    });

    try{

    person2.sex = 'female';

    }

    catch (e) {

    console.log(e);

    }

    person2.age = 20;

    console.table({

    name: person2.name,

    sex: person2.sex,

    age: person2.age

    });

    }


    查看全部
    2 采集 收起 来源:对象代理

    2019-02-14

  • https://github.com/cucygh/fe-material

    查看全部
    4 采集 收起 来源:环境搭建

    2019-02-11

  • 学前准备

    https://img1.sycdn.imooc.com//5c5d8f6100019dc007050326.jpg

    环境准备

    https://img1.sycdn.imooc.com//5c5d8f810001d83f08500475.jpg

    查看全部
    0 采集 收起 来源:环境搭建

    2019-02-08

  • //ES5 中的常量,设置常量是只读的


    Object.defineProperty(window,"pi1",{

       value:3.141592,

       writable:false,//不可编辑

    })

    console.log("pi1:"+pi1);


    // ES6 中的常量

    const pi2=3.1415926

    console.log("pi2:"+pi2);


    //pi2=4   加上这句会报 pi2 是只读的错误


    查看全部
    1 采集 收起 来源:常量

    2019-01-22

  • 进阶指导,ES6零基础教学

    查看全部
    0 采集 收起 来源:对象代理

    2019-01-17

  • 进阶指导,ES6零基础教学-解析彩票项目

    查看全部
    0 采集 收起 来源:对象代理

    2019-01-17

  • 进阶指导,ES6零基础教学:“解析彩票项目”

    查看全部
    0 采集 收起 来源:对象代理

    2019-01-17

  • 进阶指导,ES6零基础教学:解析彩票项目

    查看全部
    0 采集 收起 来源:对象代理

    2019-01-17

  • ES6进阶指导

    查看全部
    0 采集 收起 来源:对象代理

    2019-01-17

  • 下载此课程源码

    查看全部
    1 采集 收起 来源:环境搭建

    2019-01-17

  • ES6安装环境准备

    查看全部
    1 采集 收起 来源:环境搭建

    2019-01-17

  • git教程

    查看全部
    0 采集 收起 来源:环境搭建

    2019-01-13

  • https://img1.sycdn.imooc.com//5c21fa0b0001b28b19201020.jpges6语法模式

    查看全部
    0 采集 收起 来源:对象代理

    2018-12-25

举报

0/150
提交
取消
课程须知
了解JS基础知识
老师告诉你能学到什么?
1、通过对比知道为什么要学习ES6 2、快速入门ES6的学习 3、掌握ES3、ES5、ES6的联系和区别 4、学会快速构建ES6的编译环境

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!