前端开发JS日常积累

JScript语言——ES6(ES2015)

2019-06-13  本文已影响138人  张先觉

ES6(ES2015)语法介绍

1.1解构赋值的使用

    //两边,结构相同,json对json,Array对Array
    let {a,b,c} = {a:1,b:2,c:3};
    let [a, b, c] = [1, 2, 3]

1.2箭头函数的this指向问题

    //箭头函数,this,永远绑定在最初声明的作用域之下,绝对不会改变。
    let sum = (a, b) => {
        console.log(this);// this指向window
        return a + b;
    }
    let num = sum(1, 2);
    console.log(num);

1.3展开操作符的使用

    //1 剩余参数 
    function show(a, b, ...arr) {
        console.log(a, b, ...arr);
    }
    show(1, 2, 3, 4, 5);

    //2 展开数组
    let arr1 = [1, 2, 3];
    let arr2 = [1, 2, 3];
    let arr = [...arr1, ...arr2];   

1.4 ES6新增方法

    // 1.map,映射,Array方法,根据映射对象返回对象的结果(一一对应)
    let arr = [1, 2, 3, 4, 5, 6, 7];
    let reslut = arr.map(itme => itme >= 4);
    console.log(reslut);// [false, false, false, true, true, true, true]

    // 2.forEach,循环,Array方法
    let arr = ['天天', '甜甜', '田田'];
        arr.forEach((itme, index) => {
            alert(`第${index}个:${itme}`);
    });

    // 3.filter,根据写入条件,过滤数组内容
    let arr = [10, 40, 60, 80, 90, 100];
    let reslut = arr.filter(itme => itme <= 100 && itme >= 70);
    console.log(reslut);//[80, 90, 100]

    // 4.reduce,减少、合并,可以将无数的数据元素合并成为一个结果
    let arr = [0, 20, 40, 60];
    let reslut = arr.reduce((tmp, itme, index) => {//求平均数
        alert(`第${index}个:${tmp}+${itme}`)
        if (index < arr.length - 1) {
            return tmp + itme;
        } else {
            return (tmp + itme) / arr.length;
        }
    });
    console.log(reslut);

1.5Promise大致流程

    //大致流程:首先,new Promise对象,然后,看数据是否成功,最后,交给then处理。

    let p = new Promise(function(reslove,reject){//new一个,Promise对象
        $.ajax({
            url:"http://baidu.com",
            dataType:'json',
            success(data){// 成功,接收数据
                reslove(data);
            },
            error(res){// 失败,接收原因
                reslove(res);
            }
        });
    });

    p.then(function(data){//处理,接收的数据(或是原因)
        alert('成功');
    },function(res){
        alert('失败');
    });

1.6 ES5与ES6构造对象的比较

    // ES5的方式
    function Person(name, age) {
            this.name = name;
            this.age = age;
        }
        Person.prototype.show = function() {
            alert(this.name);
            alert(this.age);
        }
        let p = new Person('天天', 18);
        p.show();

    // ES6的方式   
    class Person { //class,声明类
            constructor(name, age) { //constructor,改造函数
                this.name = name;
                this.age = age;
            }
            show() {
                alert(this.name);
                alert(this.age);
            }
        }
        let p = new Person('天天', 18);
        p.show();

1.7 ES6继承方式

     class Person {
            constructor(name, age) {
                this.name = name;
                this.age = age;
            }
            show() {
                alert(this.name);
                alert(this.age);
            }
        }
        class Worker extends Person { //extends关键字,继承
            constructor(name, age, job) {
                super(name, age); //super关键字,获取父级的参数
                this.job = job;
            }
            Jop() {
                alert('敲代码的');
            }
        }
        let worker = new Worker('天天', 18, '程序员');
        worker.show();
        worker.Jop();

1.8 剖析闭包原理

    // 闭包,一种不被CG回收的函数,使用过多,会导致内存泄露。
     for(bar i = 0;i < btn.lenght; i++){
         (function(i){
             btn[i].onclick = function(){
                 alert(i);// 保留着i的引用,导致函数不会被释放
             }
         })(i)
     }

1.9 正则表示式

    // 1.找出字符串中,a/A的位置
    let str = 'Afdsgahkv';
    let re = /a/i;
    alert(str.search(/a/i));

    //2.匹配出0-9的数字
    let str = 'Afd1sga34k65v6';
    let re = /\d+/g;  //'+',表示量词,不加量词,输出一个一个的
    alert(str.match(re));

    //3.匹配实例 
    <input type="text" id="inp">
    <input type="button" value="提交" id="btn">
    <script>
        window.onload = function() {
            let inp = document.getElementById('inp');
            let btn = document.getElementById('btn');

            btn.onclick = function() {
                console.log(inp.value);
                let re = /^[1-9]\d{4,11}$/; //从头到尾,1-9的数字,4-11位数字
                if (re.test(inp.value)) {
                    alert('通过');
                } else {
                    alert('不通过');
                }
            }
        }
    </script>
上一篇 下一篇

猜你喜欢

热点阅读