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();
//
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基础知识的更多相关文章
- ES6基础知识(Reflect)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ES6 基础知识
let:用来定义变量特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明; 比如: var a = 12; var a = 5; alert(a); //5; let a = 1 ...
- ES6 基础知识-----简记 let const
ES5中只有函数作用域和全局作用域,声明变量使用var,在es6中添加声明变量 let const let 声明块级作用域变量, let 不存在变量提升 var命令会发生”变量提升“现象,即变量可以在 ...
- ES6基础知识(Map用法)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- es6基础知识总结(附加)
附加: 字符串扩展: 1. includes(str) : 判断是否包含指定的字符串2. startsWith(str) : 判断是否以指定字符串开头3. endsWith(str) : 判断是否以指 ...
- vue初体验-ES6 基础知识补充 let 和const
本人水平有限,如内容有误,欢迎指正,谢谢. let : 主要特点: 1.作用域只局限于当前代码块.2.使用let 声明的变量作用域不会被提升.3.在相同的作用域下不能声明相同的变量.4.for循环体 ...
- ES6基础知识汇总
1.如何理解ECMAScript6? ECMAScript是什么,ECMASCript的作用 2.新增let关键字 let的用途 3.关键字const const作用,传址赋值 4.解构赋值 解构赋值 ...
- ES6基础知识(async 函数)
1.async 函数是什么?一句话,它就是 Generator 函数的语法糖. const fs = require('fs'); const readFile = function (fileNam ...
- ES6基础知识(Generator 函数应用)
1.Ajax 是典型的异步操作,通过 Generator 函数部署 Ajax 操作,可以用同步的方式表达 function* main() { var result = yield request(& ...
随机推荐
- [区块链|非对称加密] 对数字证书(CA认证)原理的回顾
摘要:文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的 ...
- 论文学习-深度学习目标检测2014至201901综述-Deep Learning for Generic Object Detection A Survey
目录 写在前面 目标检测任务与挑战 目标检测方法汇总 基础子问题 基于DCNN的特征表示 主干网络(network backbone) Methods For Improving Object Rep ...
- 女朋友也能看懂的Zookeeper分布式锁原理
前言 关于分布式锁,在互联网行业的使用场景还是比较多的,比如电商的库存扣减,秒杀活动,集群定时任务执行等需要进程互斥的场景.而实现分布式锁的手段也很多,大家比较常见的就是redis跟zookeep ...
- android 自定义权限管理
在Android6.0后有些权限就需要进行询问,虽然可以将targetSdkVersion设置成小于等于23,但是这样可能有些东西无法使用,所以要进行权限的管理. 实现逻辑:打开页面就询问权限,如果没 ...
- 云计算CRM软件厂商,你青睐哪家?
2018年CRM系统软件市场风起云涌,国内外厂商群雄逐鹿.2019年,新一轮的角逐已然展开.据Gartner报告称,CRM客户关系管理系统在2017年全球的销售额首次超越数据库管理系统((Databa ...
- idea解决Maven jar依赖冲突(四)
首先点击右侧的MavenProjects打开以下界面: 这个界面是maven的命令界面: 点击这个图标会进入如下界面: 左上角可以缩放,点击线可以取消冲突依赖,红色线为冲突依赖. 上图为无依赖冲突的s ...
- Windows Server 2016-DNS客户端新增功能
域名系统(DNS)是包含TCP / IP的行业标准协议套件之一,DNS客户端和DNS服务器一起为计算机和用户提供计算机名称到IP地址映射名称解析服务. 在Windows Server 2016中,DN ...
- June 29th. 2018, Week 26th. Friday
Real love is always worth waiting for. 真爱永远值得等待. From Westworld. Real love is rare, but it does exis ...
- 神奇的选择器 :focus-within
CSS 的伪类选择器和伪元素选择器,让 CSS 有了更为强大的功能. 伪类大家听的多了,伪元素可能听到的不是那么频繁,其实 CSS 对这两个是有区分的. 有个错误有必要每次讲到伪类都提一下,有时你会发 ...
- Quartz+ssm注解方式的最最最最简单使用
Maven配置 <!-- quartz监控 --> <dependency> <groupId>org.quartz-scheduler</groupId&g ...