国产精品美女久久久浪潮AV,国产精品三级一二三区,久久精品国产一区二区小说 ,依依成人影视国产精品,全部无卡免费的毛片在线看,日本一区二区三深夜不卡,国产精品女同一区二区久久,国产精品夜色一区二区三区

        ECMAScript6學習筆記

        2019-6-27    seo達人

        如果您想訂閱本博客內(nèi)容,每天自動發(fā)到您的郵箱中, 請點這里

        這周萌芽決定好好學習一下ES6,感興趣的小伙伴們來一起學習吧~
        ES6(ES2015)——IE10+、Chrome、FireFox、移動端、Node.js

        編譯轉(zhuǎn)換

        1.在線轉(zhuǎn)換(browser.js)
        2.提前編譯

        ES6新特性
        1.變量
        2.函數(shù)
        3.數(shù)組
        4.字符串
        5.面向?qū)ο?br /> 6.promise(串行化異步交互)
        7.generator(把同步拆分為異步)
        8.模塊化(ES6自帶模塊化)

        變量
        var
        1.可以重復(fù)聲明
        2.無法限制修改
        3.沒有塊級作用域(沒有語法塊!)

        let 不能重復(fù)聲明(變量,可以修改)
        const 不能重復(fù)聲明(常量,不能修改)

        塊級作用域,let在外部無法調(diào)用

        函數(shù)
        箭頭函數(shù) =>

        function show(){
        //這是我們平常的函數(shù)
        }
        let show=()=>{
        //箭頭函數(shù)
        }
        //區(qū)別不大,把function省略掉換成箭頭,主要就是為了方便,可傳參

        1.如果只有一個參數(shù),()可以省去。

         let show=a=>{
                return a*2
            }

        2.如果只有一個return,{}可以省略

           let show=a=>a*2;
           let arr = [15,2,37,11,67,4,6]; //排序
          
           arr.sort((n1,n2)=>{
                return n1-n2;
            })
            
            arr.sort((n1,n2)=> n1-n2 );
            console.log(arr)


        函數(shù)的參數(shù)
        1.參數(shù)擴展/展開
        2.默認參數(shù)

        參數(shù)的擴展
        1.收集參數(shù)

         function arrData(a,b,...args) {
                alert(a);
                alert(b);
                alert(args);
            }
            *注意:Rest Parameter必須是最后一個(除其他語言)
        1

        2.展開數(shù)組

            arrData(...arr);       //等價于 arrData(1,2,3);
        1
        這仨點兒【…】代表把數(shù)組內(nèi)容掏出來放這。

        默認參數(shù)

        //jQuery中的默認參數(shù)
        $('#div1').animate({width:'200px'});
        $('#div1').animate({width:'200px'},1000);

        //ES6默認傳參
           function showOne(a,b=10,c=5) {
                console.log(a,b,c)
            }

        解構(gòu)賦值
        1.左右兩邊解構(gòu)必須一樣
        2.右邊必須是個合法的東西
        3.聲明和賦值不能分開(必須在一句話里完成)

            let  [one,two,three] = [10,20,30];
            let  {one1,two2,three3} = {a:10,b:20,c:30};

        數(shù)組
        map 映射(一個對一個。傳幾個返回幾個)

        let result = arr.map(function (item) {
            return item*2;
        });//簡寫一下
        let result = arr.map(item=>item*2 );

        //判斷考試成績
        let score = [19,18,78,65,100];
        let result = score.map(item=>item>=60?'及格':'不及格');

        reduce 匯總(算個總數(shù),算個平均數(shù))

        //tmp:上次求和總和,為兩兩相加,如果之前沒有結(jié)果則為傳進來的數(shù)組的第一個數(shù)。
        //itme:當前的數(shù)。
        //index:執(zhí)行的次數(shù)。

           let result = arr.reduce(function (tmp, item, index) {
               return tmp + item;
            });
            //簡寫
            arr.reduce((tmp, item, index)=>tmp + item);

        filter 過濾器(篩選掉不需要的)

         let result = arr.filter(item=>{
                if (item%2 == 0){
                    return true;
                } else {
                    return false;
                }
            });
            
         //簡寫
        let result = arr.filter(item=>item%2 == 0);
               
        //***萌芽在這里提一下!json和之前的item都不是固定的,可以隨便命名。意思都是當前的值!

         let arrProce = [
                {title:'男士襯衫',price:75},
                {title:'女士包包',price:5000},
                {title:'男士包包',price:20},
                {title:'女士鞋',price:2500}
            ];
            let result = arrProce.filter(jsom=>json.price >= 2000);
            console.log(result);

        forEach循環(huán)(迭代)

           arr.forEach((item,index)=>{
                alert(index+":"+item)
            })

        字符串
        1.多了倆新方法
        startsWith(); //判斷開頭,返回布爾類型
        endWith(); //判斷結(jié)尾,返回布爾類型

        let str='hello,world!'
        str.startsWith('h')
        str.endWith('!')      //返回true

        2.字符串模板
        字符串連接
        2.1直接把東西塞進字符串里面 ${東西}
        2.2可以折行

        <h1>${title}</h1>
        <p>${content}</p>

        ES6的面向?qū)ο?br /> 1.class關(guān)鍵字,構(gòu)造器和類分開啦。
        2.class里面直接加方法。

            class User{
                constructor(name,password){   //構(gòu)造器
                    this.name = name;
                    this.password = password;
                }

                showName(){
                    alert(this.name);
                }
                showPass(){
                   alert(this.password);
                }
            }

            var user = new User('萌芽子','123456');
            user.showName();
            user.showPass();

        繼承

            class VipUser extends User{
                constructor(name,password,age){
                super(name,password);          //super 超類
                this.age = age;
                }
                showAge(){
                    alert(this.age)
                }
            }
            var user = new VipUser('萌芽子','123456','18歲');
            user.showName();
            user.showPass();
            user.showAge();

        不得不說作為一只JAVA汪,這種寫法真得勁!

        面向?qū)ο蟮膽?yīng)用
        React
        1.組件化(class)
        2.JSX(JSXbabelbrowser.js)
        JSX屬于JS的擴展版

        class Test extends React.Component{
         constructor(...args){
         super(...args);
         }
        render(){
        return <li>{this.props.str}</li>         //props:屬性
        }
        }

        window.onload = function(){
        let oDiv = document.getElementById('div1');

        ReactDOM.render(
        <ul>
        <Item str="你好"></Item>
        <Item str="世界!"></Item>
        </ul>
        oDiv
        );
        };


        打卡,下次就學這個了!===============

        json
        1.JSON對象

        JSON.stringify() json轉(zhuǎn)字符串

         let json = {a:10, b:20};//JSON.stringify   字符串化
            let str = 'http://www.baidu.com/path/user?data='+JSON.stringify(json);
            str = 'http://www.baidu.com/path/user?data='+encodeURIComponent(JSON.stringify(json));
            alert(str)
        1
        2
        3
        4
        JSON.parse() 字符串轉(zhuǎn)json

            let str = '{"a":12,"b":20,"c":"可樂"}';
            let json = JSON.parse(str);
            console.log(json);

        2.簡寫
        在新版的ES6當中名字一樣的鍵(key)和值(value)可以只寫一個。

            let a = 12;
            let b = 5;
            let json = {a,b,c:21};

        簡化了JSON中的方法。

         let json ={
                a:12,
                showJson(){
                    alert(this.a);
                }
            };
            json.showJson();

        json的標準寫法:
        1.只能用雙引號
        2.所有的名字都必須用引號包起來(所有的key都必須是雙引號)

        {a:12,b:5}     × 錯誤的寫法
        {"a":"萌萌萌","b":"芽子"}     √ 正確的寫法
        1
        2
        Promise(承諾)
        異步:操作之間沒啥關(guān)系,同時進行多個操作
        同步:同時只能做一件事
        優(yōu)缺點:
        異步:代碼更復(fù)雜
        同步:代碼簡單
        Promise——消除異步操作
        *用同步一樣的方式來書寫異步代碼;

            let p = new Promise(function (resolve,reject) {
                //異步代碼
                //resolve——成功
                //reject——失敗
            })

        -----------------------------------------訪問我們的arr.txt文件,這里用到了jQuery的ajax就不詳細介紹了。
          let p = new Promise(function (resolve, reject) {
                //異步代碼
                //resolve——成功
                //reject——失敗
                $.ajax({
                    url: 'arr.txt',
                    dataType: 'json',
                    success(arr) {
                        resolve(arr);
                    }, error(err) {
                        reject(err);
                    }
                })
            });
            //結(jié)果
            p.then(function (arr) {
                alert('成功啦' + arr)
            }, function (err) {
                alert('失敗了' + err)
                console.log(err)
            });
        -----------------------------------------------多個請求地址
          Promise.all([p1,p2]).then(function (arr){
                let [res1,res2] = arr;
                alert('全部成功啦');
                console.log(res1);
                console.log(res2);
            },function (){
                alert('至少有一個失敗了');
            });
            ----------------------------再簡化
            function createPromise(url){
            return new Promise(function (resolve, reject) {
                    $.ajax({
                        url,
                        dataType: 'json',
                        success(arr) {
                            resolve(arr);
                        }, error(err) {
                            reject(err);
                        }
                    })
                });
            }
          Promise.all([
                createPromise('arr.txt'),
                createPromise('json.txt')
            ]).then(function (arr){
                let [res1,res2] = arr;
                alert('全部成功啦');
                console.log(res1);
                console.log(res2);
            },function (){
                alert('至少有一個失敗了');
            });
        ----------------------完美寫法
         Promise.all([
                $.ajax({url:'arr.txt',dataType:'json'}),
                $.ajax({url:'json.txt',dataType:'json'})
            ]).then(function (results) {
                let [arr,json] = results;
                alert("成功了");
                console.log(arr,json)
            },function () {
                alert("失敗了")
            })

        我們有了promise之后的異步:

         Promise.all([ $.ajax(),$.ajax() ]).then( results=>{
           //對了
            },err=> {
           //錯了
            })

        Promise.all (必須全部成功)
        Promise.race(同事讀多個數(shù)據(jù),即使失敗也沒關(guān)系)

        generator(生成器)
        普通函數(shù) - 一路到底執(zhí)行不可中斷
        generator函數(shù) - 可中斷

         function * show() {
                alert('a');
                yield;//暫時放棄執(zhí)行
                alert('b');
            }
            let genObj = show();
            genObj.next();
            genObj.next();

        yield
        yield傳參

          function * show(num1,num2) {
                alert(`${num1},${num2}`);//es6
                alert('a');
               let a = yield;//暫時放棄執(zhí)行
                console.log(a);
                alert('b');
            }
            let genObj = show(99,88);
            genObj.next(12);//第一個next無法給yield傳參的,廢的
            genObj.next(5);

        yield返回

          function *show() {
                alert('a');
                yield 12;
                alert('b');
                return 55;
            }

            let gen = show();
            let res1 = gen.next();
            console.log(res1);      //{value: 12, done: false}
            let res2 = gen.next();
            console.log(res2);//{value: undefined, done: true}  加了return  {value: 55, done: true}



        還沒做的菜叫函數(shù)參數(shù),過程是yield之前函數(shù)里面的東西,干凈的菜,切好的菜是中間過程也就是yield,最終我們將它返回出去!不得不說這圖很生動。
        異步操作
        1.回調(diào)

        $.ajax({
            url:'url',
            dataType:'json',
            success(data){
                $.ajax({
                    url:'xxx',
                    dataType: 'json',
                    success(data) {
                        //完事兒了
                    },error(err) {
                        alert('錯了')
                    }
                })
            },error(){
                alert('失敗')
            }
        })

        2.Promise

        Promise.all([
                $.ajax({url:xxx,dataType:'json'}),
                $.ajax({url:xxx,dataType:'json'}),
                $.ajax({url:xxx,dataType:'json'})
            ]).then(results=>{
                //完事兒
            },err=>{
                //錯誤的
            })

        3.generator

        runner(function  *(){
        let data1 = yield $.ajax({ulr:xxx,dataType:'json'});
        let data2 = yield $.ajax({ulr:xxx,dataType:'json'});
        let data3 = yield $.ajax({ulr:xxx,dataType:'json'});
        })
        1
        2
        3
        4
        5
        generator(不能用=>函數(shù))
        邏輯判斷下非常好用。
        Promise:一次讀一堆。
        generator:邏輯性。

        runner(function *(){
        let userData = yield $.ajax({url:'getUserData',dataType:'json'});
        if(userData.type == 'VIP'){
        let items = yield $.ajax({url:'getVIPItems',dataTyoe:'jsom'});
        }else{
        let items = yield $.ajax({url:'getItems',dataTyoe:'jsom'});
              }
        //生成...
        }
        })

        總結(jié)
        1.變量:
        var:能重復(fù)聲明、函數(shù)級
        let: 嚴格的,不能重復(fù)聲明,塊級,變量
        const:嚴格的,不能重復(fù)聲明,塊級,常量

        2.箭頭函數(shù)
        2.1方便
        i.如果只有一個參數(shù),()可以省
        ii.如果只有一個return,{}可以省
        2.2修正了this
        this相對正常點

        3.參數(shù)擴展
        …能收集
        …能擴展
        默認參數(shù)

        4.數(shù)組方法
        map 映射
        reduce 匯總
        filter 過濾
        forEach 循環(huán)

        5.字符串
        starsWith/endWith
        字符串模板:${a}xxx{b}

        6.Promise
        封裝異步操作
        Promise.all([]);

        7.generator
        function *show(){
        yield
        }

        8.JSON
        JSON.stringify({ a :12,b :5}) => {“a”:12,“b”:5}
        JSON.parse(’{“a”:12,“b”:5}’) =>{a:12,b:5}//字符串

        9.解構(gòu)賦值
        let [a,b,c] = [12,5,8];
        左右結(jié)構(gòu)一樣,右邊是個合法的東西,連生命帶賦值一次完成。

        10.面向?qū)ο?br /> class Test(){
        constructor(xxx){
        this = xxx
        }
        方法1(){
        }
        方法2(){
        }
        }
        繼承
        class Test2 extends Test(){
        constructor(){
        super();
        }
        }

        談?wù)凟S7和ES8
        1.數(shù)組includes
        數(shù)組是否包含某個東西

        2.數(shù)組 keys/values/entries
        for…in(循環(huán)數(shù)組)
        對于數(shù)組來講循環(huán)的是下標
        對于json循環(huán)的是key

        for…of(循環(huán)迭代器)
        對于數(shù)組循環(huán)的是值
        不能用于JSON,json并不是迭代器

        keys = >所有的key拿出來 0,1,2,3…
        values =>所有的values拿出來 23,5,8,1…
        entries =>所有的鍵值對拿出來 {key:0,value:a}

        let arr = [12,5,8,99];
        for(let [key,value] of arr.entries()){
        alert(`${key} = ${value}`);

        預(yù)覽版,目前極大多數(shù)瀏覽器都不支持,以后可能會支持,了解一下就好。
        藍藍設(shè)計www.shtzxx.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標定制 、 用戶體驗 、交互設(shè)計、網(wǎng)站建設(shè) 平面設(shè)計服務(wù)

        日歷

        鏈接

        個人資料

        藍藍設(shè)計的小編 http://www.shtzxx.cn

        存檔

        主站蜘蛛池模板: 亚洲精品无码人妻无码| 护士被两个病人伦奷日出白浆| 偷国产乱人伦偷精品视频| 亚洲日产韩国一二三四区| 滴答影院在线观看免费| 疯狂做受xxxx高潮欧美日本| 萍萍的性荡生活第二部| 中国护士18xxxxhd| 夜夜躁狠狠躁日日躁2002| 安宁市| 成人免费乱码大片a毛片| 精品人妻少妇一区二区三区| 亚洲天堂av 在线| 日产日韩亚洲欧美综合在线 | 69xx老熟女| 福清市| 国产乱子伦一区二区三区四区五区 | 免费视频网站在线看视频| 色综合99久久久无码国产精品 | 90后极品粉嫩小泬20p| 日日天日日夜日日摸| 狠狠综合久久久久尤物丿| 国产成人精选在线观看不卡 | 草草ccyy免费看片线路| 兴义市| 好男人电影在线观看| 亚洲国产成人精品青青草原 | 欧美乱妇xxxxxbbbbb| 桑日县| 普宁市| 久久精品视频在线看15| 国产无遮挡吃胸膜奶免费看| 国产人成视频在线视频| 在线精品视频一区二区三区| 一个色的导航| 粗大黑人巨精大战欧美成人| 狂躁美女大bbbbbb| 四川bbb搡bbb爽爽视频| 男受被做哭激烈娇喘gv视频| 在线观看免费人成视频色| 精品国产美女福到在线不卡|