es6基础知识

1.超引用:(...)

  用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

function fun(...args){
            console.log(args);     //[1,2,3,4,5,6]
            args.push(7);
            console.log(args);   //[1,2,3,4,5,6,7]
        }fun(1,2,3,4,5,6)

2.解构赋值:

  赋值:

 var a = 10,b = 20,c = 30;
 console.log(a,b,c)        //10 20 30

  解构:

//数组的格式
        var [a,b,c] = [40,20,30];
        console.log(a,b,c)      //40 20 30

//json格式
        var {a,b,c} = {a:10,c:30,b:20};    //可以调换顺序
        console.log(a,b,c);          //10 20 30

        var [a,[b,c],d] = [5,[10,20],30];  //格式对应即可
        console.log(a,b,c,d)          //5 10 20 30

//混用
        var [{a,b},c,[d,e],f] = [{b : "jack",a : "100"},5,[10,20],30];
        console.log(a,b,c,d,e,f)        //100 jack 5 10 20 30

3. for of循环:

  es5的for循环:

var arr = ["red","green","blue","yellow","black"];
        for(var i = 0;i < arr.length;i++){
            console.log(arr[i]);          //
}

  for in 循环:

for(var i in arr){
            console.log(i);   //输出的是索引
            console.log(arr[i]);
}

  

   for of 循环:(不能用来遍历json)

for(var i of arr){
        console.log(i);   //输出的直接是值
}

4.Map对象

//map就是用来存东西的,跟obj类似

var map = new Map();
        console.log(map);
        map.abc = "jack";
        map.age = "100";
        console.log(map);

        // 设置值  增 改
        map.set("a","red");
        map.set("b","green");
        console.log(map)

        //查
        console.log(map.abc);
        console.log(map.get(‘a‘));

        // 删除
        delete map.abc;
        delete map.a;
        map.delete("a");
        console.log(map)

map对象是因为for of 的出现才出现的,一个map对象只能用for of 来遍历.

var map = new Map();
        map.set("a","red");
        map.set("b","green");
        map.set("c","blue");
        map.set("d","yellow");
        map.set("e","black");

        for(var index of map.entries()){    //全写
            console.log(index);
        }

        // 只想循环key
        for(var key of map.keys()){
            console.log(key);
        }

        // 只想循环value
        for(var value of map.values()){
            console.log(value);
        }

 5.箭头函数

  没有参数时:

var x= () =>{
    console.log("hello");
}

  有参数时

 var x = (a,b) =>{
  console.log(a+b);
}x(1,2)

  返回对象时要用小括号包起来,因为花括号被解释为代码块了;

var x= () =>{
    return({    uname:"www",    gae:18  })
}

  直接作为事件handle:

document.addEventlistener("onclick",ev =>{
      console.log(ev);
}

6.es6原型

  在ES6以前,必须有类和构造,在ES6以前是没有类的概念,构造函数即是构造,也是类;到了ES6,完全划分开了]

  es5:

function Grand() {
   this.lastName = "王";
}
var grand = new Grand ();

Father.prototype = grand;  //继承

function Father() {
  this.play = "打球";
}
var father = new Father;
console.log(father);

Son.prototype = father:
function son() {
   this.play = "打架"
}
var son = new Son();
console.log(son)

  es6:

//class 类//constructor 构造函数

calss Person{        //类     constructor(name, age){    //构造      this.name = name;      this.age = age;  }   showName(){      return this.name;  }  showAge{      return this.age;  }}

var person = new Person("jack",18);

class Student extends Person{   //继承   constructor (name,age,pid){    super(name,age):    this.pid = pid;}   showPid(){    return this.pid;}

var student = new Student("mack",50,"00001") ;console.log(student)

 7.promise   

  它就是一个对象,主要是用来处理异步数据的.

  在promise中,有三种状态 :  pending(等待,处理中) --->  resolve(完成)/   rejected(失败,拒绝)

var por = Promise(function(relove,reject){
       resolve(123);   //成功的函数,成功后把这个数据传递出去
})

pro.then(function(val){        //then方法执行完成后又返回了一个promise对象
       //这是个成功的回调
       console.log("成功了,接收到的数为:"+val);
       return val +1;
},function(err){
       //这是个失败的回调
      console.log(err);
}).then(function(val){      //之前的then成功后,返回了一个值,这里还要继续执行
    console.log(val)
}.function(err){})            

  处理数据(简化步骤)

<div id="box"></div>
    <button id="btn">展示</button>
    <script>
        var box = document.getElementById("box");
        var btn = document.getElementById("btn");

        function ajax(url,succ,erro){
            var xhr = new XMLHttpRequest();
            xhr.open("GET",url,true);
            xhr.send();
            xhr.onload = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    succ(xhr.responseText);
                }else{
                    erro(xhr.status);
                }
            }
        }

        btn.onclick = function(){
            var p = new Promise(function(resolve,reject){
                ajax(‘04.txt‘,function(data){
                    resolve(data);
                },function(status){
                    reject(status);
                })
            });
            p.then(function(data){
                box.innerHTML = data;
            },function(err){
                box.innerHTML = err;
            })
        }
    </script>

  与之配套的一些方法:

   catch() : 捕获

<script>
        // catch    捕获
        var p = new Promise(function(resolve,reject){
            resolve("success");
        })
        p.then(function(data){
            console.log(data);
            throw "发生错误了"
        }).catch(function(err){
            console.log(err);
        })
    </script>

    all()

<script>
        // 只有当所有的promise全部成功才能走成功,否则失败
        var p1 = Promise.resolve(10);
        var p2 = Promise.resolve(20);
        // var p3 = Promise.reject(30);

        Promise.all([p1,p2,true,false]).then(function(data){
            console.log(data);
        },function(err){
            console.log(err);
        })
</script>

    race()

<script>
        // race也是返回一个promise对象
            // 获取最先得到的结果,得到以后就不去执行了

        var p1 = new Promise(function(resolve,reject){
            setTimeout(resolve,100,"first");
        })
        var p2 = new Promise(function(resolve,reject){
            setTimeout(resolve,50,"second");
        })
        Promise.race([p1,p2]).then(function(val){   //cdn   >    本地加载
            console.log(val)
        })
    </script>

  reject()

<script>
        var p1 = Promise.resolve(10);
        var p2 = Promise.resolve(p1);    //成功的promise里面可以传递一个成功的promise对象
        p2.then(function(data){
            console.log(data);
        })
    </script>

8,generator(状态机)

  遍历完成后,下一个元素的done值会是true

<script>
    //generator是一个函数,可以将它看做状态机
    function* fun(){
        yield "hello";
        yield "ES6";
        yield "hello";
        yield "mercy";
    }
    var fn = fun();
    //1
    console.log(fn.next());         //{value: "hello", done: false}
    console.log(fn.next());         //{value: "ES6", done: false}
    console.log(fn.next());         //{value: "hello", done: false}
    console.log(fn.next());         //{value: "mercy", done: false}
    console.log(fn.next());         //{value: undefined, done: true}     done表示已经讲整个generator函数遍历完成

    //2
    for (var a of fn){
        console.log(a);
    }

    //1和2两者只能有一个存在,如果1存在的话,2就不会执行
    </script>

  

原文地址:https://www.cnblogs.com/1234wu/p/10476018.html

时间: 2024-07-30 22:56:48

es6基础知识的相关文章

ES6基础知识(Reflect)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

ES6 基础知识-----简记 let const

ES5中只有函数作用域和全局作用域,声明变量使用var,在es6中添加声明变量 let const let 声明块级作用域变量, let 不存在变量提升 var命令会发生"变量提升"现象,即变量可以在声明之前使用,值为undefined.这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用. 为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错. var 声明的变量可以在声明之前使用,是undifind,存在变量提升现象,le

ES6基础知识汇总

1.如何理解ECMAScript6? ECMAScript是什么.ECMASCript的作用 2.新增let关键字 let的用途 3.关键字const const作用.传址赋值 4.解构赋值 解构赋值是什么,解构赋值方式 5.字符串新特性 模板字符串.标签模板

ES6基础知识(Generator 函数应用)

1.Ajax 是典型的异步操作,通过 Generator 函数部署 Ajax 操作,可以用同步的方式表达 function* main() { var result = yield request("http://some.url"); var resp = JSON.parse(result); console.log(resp.value); } function request(url) { makeAjaxCall(url, function(response){ it.nex

ES6基础知识(async 函数)

1.async 函数是什么?一句话,它就是 Generator 函数的语法糖. const fs = require('fs'); const readFile = function (fileName) { return new Promise(function (resolve, reject) { fs.readFile(fileName, function(error, data) { if (error) return reject(error); resolve(data); });

vue准备知识-es6基础

目录 知识 let和const 模板字符串 箭头函数 对象的单体模式 面向对象 一.知识 http://www.cnblogs.com/majj/https://www.cnblogs.com/majj/category/1216624.html 阮一峰 es6 http://es6.ruanyifeng.com/ https://www.bootcdn.cn/ http://www.cnblogs.com/majj/ 前端 VUE 博客每个人都要去写! html(语义化,除了语义,其他得都没什

前端团队成长计划(一):基础知识梳理

一个月前我开始了前端团队的成长计划,主要主语两方面的考虑:校招应届生能快速进入工作的状态达到一个能支撑业务的技能水平,提前学习主流前端技术,为未来的业务代码重构做储备.5月是整个计划的第一个阶段,主要的任务是,梳理常规前端基础知识和开发技能. 5月的计划如下:(偏基础) 1.js和css的一些规范以及常规功能如何实现: 2.了解现有业务工程的开发,部署,上线流程以及原理,做到可交叉维护: 3.初步了解gulp,为下一阶段做准备. 4.了解PC开发中常见的问题以及IE浏览器的兼容方式(IE8+)

Node.js基础知识杂烩

Node.js基础知识杂烩 这段时间做项目主要做关于服务器的功能点,因此,逐渐开始学习node.js写服务器,总体下来,觉得node比php更好用,写服务前器的速度更快,处理效率更高.注:node并不是专门写服务器的,其实node的出现,将js从web前端的专用语言,变成了一门通用语言.node中有各样的基础模块:比如fs,path,buffer,http,net等模块,此外,node还有各种各样的三方模块,比如写服务器人常用的express,co,koa,seqlize等著名框架,也就是三方模

vue基础知识之vue-resource/axios

Vue基础知识之vue-resource和axios(三) vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery.vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应.也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁.另外,vue-resource还提供了