目录

异步与等待

async 异步

async实例

执行结果

await 等待

await实例

Symbol

定义:

使用方法:

打印结果

迭代器

定义

使用方法

生成器

定义

使用方法

实例

代理Proxy

定义

实例


异步与等待

async 异步

async装饰的函数返回的是一个promise对象

async实例

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script type="text/javascript">async function say(){return "abc"}var f = say()console.log(f);</script></body>
</html>

执行结果

await 等待

await只能在async函数里面使用,当函数遇到await时会等待await结果,再继续向下执行

await实例

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script type="text/javascript">function say(msg,time){return new Promise((resolve,reject)=>{setTimeout(()=>resolve(msg),time)})}// 定义async函数async function doit(){// await 会等待say函数执行完才会向下执行var s1 = await say("你好",2000)    // 两秒后说你好console.log(s1)var s2 = await say("我很中意你",3000)// 三秒后说我很中意你console.log(s2)return s1+s2//跟随s2一起执行}doit().then(res=>console.log(res))</script></body>
</html>

Symbol

定义:

表示独一无二的值,一般用于定义对象的唯一属性名,不可修改,不可重复

使用方法:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script>let sym = Symbol("内容");console.log(sym,typeof sym);var obj={sym:"abc"};</script></body>
</html>

打印结果

迭代器

定义

可迭代对象都是拥有迭代器(可以被for of 遍历的对象都有迭代器)

Array数组,String字符串,Set集合,Map图

使用方法

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script type="text/javascript">var arr=[2,6,8];// 获取数组的迭代器var iter = arr[Symbol.iterator]();// iter.next() 执行结果// iter.next();//{value:2,done:false}// iter.next();//{value:6,done:false}// iter.next();//{value:8,done:false}// iter.next();//{value:undefined,done:true}</script></body>
</html>

生成器

定义

普通函数前面添加 *   通过yield关键来控制生成最终函数执行 返回一个可迭代元素

内容包含start,不包含end

使用方法

function *range(start,end,step=1){while(start<step){yield start;start+=step;}
}

实例

编写打印从2到101,步为2的生成器

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script type="text/javascript">function *range(start,end,step){while(start<end){yield start;start+=step;}}var list = range(2,101,2);// var arr = Array.from(list);// var arr = [...list];// range 产生有start到end的一个可迭代对象for(var v of list){console.log(v);}</script></body>
</html>

代理Proxy

定义

代理就是对原有对象target进行二次加工

实例

修改obj的age属性的值,限定在0~200之间

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script type="text/javascript">// 代理就是对原有对象target二次加工。、var obj = {"name":"月凉笙",age:18};//用o来代理objvar o = new Proxy(obj,{// 当获取o对象的属性值进行get方法get:function(target,prop){//如果属性名在原对象里if(prop in target){// 返回原对象属性return target[prop]}else{// 返回 无名return "无名"}},set:function(target,prop,value){if(prop==="age"){if(value>200||value<0){// 发送一个范围错误throw RangeError('这个年龄恐怕不是人类')}else{target[prop]=value;}}else{target[prop]=value;}}})</script></body>
</html>

页面中有一个输入框与一个p标签,修改文本框内容,p的内容跟随改变

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><input type="text" id="inp"/><p id="myp"></p><script>// 获取两个节点var inp = document.getElementById("inp");var myp = document.getElementById("myp");// 定义objvar obj = {msg:"我喜欢VUE"};// 使用代理劫持objvar o = new Proxy(obj,{// get劫持get(target,prop){return target[prop]},// set劫持// 原对象  属性  值set(target,prop,value){// 只要被设置,value 就会输出// console.log(value);if(prop==="msg"){myp.innerText=value;inp.value=value;}target[prop]=value;}})// 设置节点的值和文本inp.value = o.msg;myp.innerText=o.msg;// 目标,input发生变化,p也跟随变化inp.oninput=function(){o.msg=inp.value}</script></body>
</html>

ES6详细总结(3)相关推荐

  1. ES6详细介绍及使用

    ES6详细介绍及使用 一. ES6概念及发展史 1.ES6概念 以前学习JavaScript的时候,对ES5是有了解过的,但是在学习Vue的时候,就会发现有很多新的写法是ES6中的,真是让人捉急.所以 ...

  2. ES6详细知识点汇总

    目录 ES6最常用知识清单 1.let关键字 2.const关键字 3.解构赋值 4.模板字符串 5.简化对象写法 6.箭头函数 7.rest参数 8.扩展运算符 9.Symbol数据类型 9.1Sy ...

  3. 前端-初级工程师掌握技术点

    前端-初级工程师技术点 一.技能 1.对Promise的理解.优缺点 Promise基本特性 Promise有三种状态:pending(进行中).fulfilled(已成功).rejected(已失败 ...

  4. es6标准入门第3版pdf_最详细,快速入门Web前端开发的正确姿势

    入门标准 入门标准很简单,就一条:达到能参与 Web 前端实际项目的开发水平.请注意,是实际项目,这就需要了解如今的实际项目开发都用了哪些技术栈.HTML/CSS/JavaScript 这三大基础技术 ...

  5. ES6 迭代器与生成器(非常详细、容易理解)

    下面是对ES6中迭代器和生成器的整理,非常详细.容易理解,希望可以帮助到有需要的小伙伴~ 文章目录 迭代器是什么 Iterator接口 迭代协议 for...of语句的用法 返回迭代器对象的方法 与f ...

  6. 纯JavaScript实现俄罗斯方块(详细注释,ES6)

    借鉴了慕课网的课程<基于websocket的火拼俄罗斯(单机版)>虽然改动比较多,但是还是核心部分没有改,加了一些不怎么好听的声音,和看起来并不好看的界面. CSS部分基本是瞎写的,因为对 ...

  7. 史上最详细易懂的ES6模块化语法(重点)

    对于初次学习ES6的小伙伴来说,ES6的模块化语法是一个重点,在没有模块化之前,前端js代码有一下三句话 1.私密不漏 2.重名不怕 3.依赖不乱 一.接下来先演示在没有模块化之前,这个"私 ...

  8. 最详细ES6教程_变量的解构赋值

    最详细ES6教程_变量的解构赋值 数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定 ...

  9. ES6 class关键字 ~ 非常详细

    下面的对ES6中class关键字的整理,希望可以帮助到有需要的小伙伴~ 文章目录 类的声明 构造函数 getter与setter 不允许提前声明 不允许重复声明 静态方法 静态方法的语法 类的继承 实 ...

最新文章

  1. 一个java高级工程师的进阶之路【转】
  2. 发表的原创文章还希望大家多提宝贵意见!
  3. 第一天入职,备用vs快捷键大全
  4. JAVA线程的interrupt
  5. Python官方文档学习心得(第三篇)
  6. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
  7. JavaScript-No.01 JavaScript实现封装、继承、多态
  8. [转]C++异常处理 12
  9. 经典排序算法(十七)--计数排序Counting Sort
  10. JavaScript数据结构与算法基础学习笔记03----链表与双向链表
  11. android日期时间控件
  12. 等保2.0三级物联网安全扩展要求
  13. linux exchange 账号,使用Linux客户端Thunderbird连接Exchange Server
  14. linux(四) -- 常用基本命令
  15. 互联网寒冬下如何过冬?厚积薄发还是直接开摆?我选这个
  16. Flask项目能打包为单个exe文件运行?掌握原理后居然如此简单!
  17. 怎样成为精力管理的高手-听书有感
  18. 英语语法:定语从句讲解
  19. 神经网络优化(1)之梯度截断
  20. PHP中播放音乐代码

热门文章

  1. 频率域滤波之带阻滤波器matlab代码
  2. MOSSProject 2007语言包安装和部署
  3. Opencv鼠标响应(框选以及取点)
  4. 【操作系统】页式储存方式,页,页表,页表项
  5. 3dsmax 里”编辑网格“与”编辑多边形“的区别
  6. 端口映射+物理机、虚拟机互访+Pyqt5、Gui图形化界面+Mysql数据库
  7. mysqldump 命令参数大全
  8. MYSQL数据备份之mysqldump命令详解(附脚本定时备份)
  9. MFC中 单文档程序 删除工具栏
  10. 删除swap分区后,Archlinux开机报[failed]failed to start Load/Save Screen Backlight Brightness