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();
//
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函数遍历完成 //
for (var a of fn){
console.log(a);
} //1和2两者只能有一个存在,如果1存在的话,2就不会执行
</script>

  

es6基础知识的更多相关文章

  1. ES6基础知识(Reflect)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. ES6 基础知识

    let:用来定义变量特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明; 比如: var a = 12; var a = 5; alert(a); //5; let a = 1 ...

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

    ES5中只有函数作用域和全局作用域,声明变量使用var,在es6中添加声明变量 let const let 声明块级作用域变量, let 不存在变量提升 var命令会发生”变量提升“现象,即变量可以在 ...

  4. ES6基础知识(Map用法)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. es6基础知识总结(附加)

    附加: 字符串扩展: 1. includes(str) : 判断是否包含指定的字符串2. startsWith(str) : 判断是否以指定字符串开头3. endsWith(str) : 判断是否以指 ...

  6. vue初体验-ES6 基础知识补充 let 和const

    本人水平有限,如内容有误,欢迎指正,谢谢. let  : 主要特点: 1.作用域只局限于当前代码块.2.使用let 声明的变量作用域不会被提升.3.在相同的作用域下不能声明相同的变量.4.for循环体 ...

  7. ES6基础知识汇总

    1.如何理解ECMAScript6? ECMAScript是什么,ECMASCript的作用 2.新增let关键字 let的用途 3.关键字const const作用,传址赋值 4.解构赋值 解构赋值 ...

  8. ES6基础知识(async 函数)

    1.async 函数是什么?一句话,它就是 Generator 函数的语法糖. const fs = require('fs'); const readFile = function (fileNam ...

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

    1.Ajax 是典型的异步操作,通过 Generator 函数部署 Ajax 操作,可以用同步的方式表达 function* main() { var result = yield request(& ...

随机推荐

  1. Mybaits-plus实战(三)

    1. Mybaits-plus实战(三) 1.1. 特殊使用规则 1.1.1. Model逻辑删除 数据库对应实体类,继承Model类可以实现AR模式的sql语句操作,但这里需要注意的是,对逻辑删除, ...

  2. 使用Rotativa在ASP.NET Core MVC中创建PDF

    在本文中,我们将学习如何使用Rotativa.AspNetCore工具从ASP.NET Core中的视图创建PDF.如果您使用ASP.NET MVC,那么Rot​​ativa工具已经可用,我们可以使用 ...

  3. asp.net core系列 55 IS4使用Identity密码保护API

    一.概述 OAuth 2.0资源(web api)所有者密码授权,允许客户端(Client项目)向令牌服务(IdentityServer项目)发送用户名和密码,并获取代表该用户的访问令牌.在官方文档中 ...

  4. Asp.Net Core&钉钉开发系列

    阿里钉钉在商业领域的规模越来越大,基于钉钉办公的企业越来越多,将一个企业内现有用到的工具(如钉钉)能够更融入到他们的工作中,提高工作效率,那便需要开发者不断的学习.应用了,同时,个人也有一个预感,未来 ...

  5. Python中的那些“坑”

    1.哪个是True,哪个是False? 这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: ...

  6. 【野草】SQL Server之索引解析(一)

    1.写在前面 微软专门给出SQL Server设计思路及实现路线,从7大体系结构阐述是如何实现,通过了解这些,我们就可以总结出数据库设计原则.编程中sql写法及注意事项,从而优化我们的系统性能,本系列 ...

  7. vue学习笔记3

    Vue.js - Day3 定义Vue组件 什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即 ...

  8. postgresql 使用pg_restore时显示role "root" does not exist的解决办法

    在docker里恢复bakcup格式的数据库,结果提示role "root" does not exist 解决方法: 切换用户: su - postgres 然后再次运行命令: ...

  9. JNI实战(四):C 调用 Java

    在前面我们讲了一下如何使用Java调用C,本文我们讲一下如何使用JNI提供的接口来反射得到Java方法进行调用. 主要步骤如下: FindClass (找到Java层的类) GetMethodID / ...

  10. Intellij IDEA 阅读源码的 4 个绝技,我必须分享给你!

    前段时间分享了<阅读跟踪 Java 源码的几个小技巧>是基于 Eclipse 版本的,看大家的留言都是想要 IDEA 版本的源码阅读技巧. 所以,为了满足众多 IDEA 粉丝的要求,栈长我 ...