es6 语法 解构 拼接 扩展运算 数组降为 symbol 迭代器 生成器 定时器 map 映射 对象字面量 私有属性 构造函数继承

es6 语法 解构 拼接 扩展运算 数组降为 symbol 迭代器 生成器 定时器 map 映射 对象字面量 私有属性 构造函数继承  promise async await

解构

   // 解构var character = {name:'Brucezzz',pseudonym:'Bruce',metadata:{age:32,gender:'male',airbags: "说两句啊",airconditioning: false,color: 'red'},}// 解构添加var { c = 101, } = character  //c从新添加  101console.log(c,'结构一')var { boo = {size:10}} =character   //在boo 里边添加 {size:10}console.log(boo,'结构二')// 解构加上 从新 修改  对象解构  普通结构var getCarProductModel = ({ name, pseudonym,metadata:{ airbags ,color}}) => ({   //({ name, pseudonym,metadata:{ airbags ,color}})  解构sku: name + ':' + pseudonym + ':' + airbags +color,  //从新赋值name, pseudonym,})console.log(getCarProductModel(character),'结构三')

 

拼接

 // 连接符写法一function  join(...arr){  //解构  // return arr.join('--')}console.log(join('--','first', 'second', 'third')) //添加分割线// 连接符写法二function join(separator,...arr){return arr.join(separator)}console.log(join('-+-', 'first', 'second', 'third')) //添加分割线

 

扩展运算

    // 扩展运算符// 多个扩展let arr1 = ['kl','kkk']let arr3 = [1, 2, 3, 4, 5, 6];arc = [...arr1,...arr3]  //解构每个对象的值  然后添加到一个 arc中console.log(arc)  //(8) ['kl', 'kkk', 1, 2, 3, 4, 5, 6]var {x,v,...s} = {x:1,v:3,b:2,d:6}  //三点语法  x和v获取单个值   剩下的用...代替 console.log(x,v,s)  // 拓展运算符 二function cas(){return ["lll",...arguments,'sdljdsl']  //剩余参数长度}console.log(cas('a', 'b', 'c')) //(5) ['lll', 'a', 'b', 'c', 'sdljdsl']// 也可以直接单独输出数组 剩余长度console.log([..."hadowRoot"]) //(9) ['h', 'a', 'd', 'o', 'w', 'R', 'o', 'o', 't']

 

数组降为

      // // 数组降维var arr = [1,3,4,[4,5,6,7]]console.log(arr.flat())  //(7) [1, 3, 4, 4, 5, 6, 7]

symbol

   // Symbollet aa = Symbol('nihao')let ba = Symbol('nihao')console.log(aa===ba) //false// // Symbol.forlet a = Symbol.for('jj')let b = Symbol.for('jj')console.log(a===b) //true

 

迭代器

    // // 迭代器      //false表示数组成员没遍历结束,true表示结束。// iterator next()let Uname = ["搜到", "的撒", "的风格", "范德萨", "公司发", "告诉对方"];for(let a of Uname){//对上边的Uname进行遍历console.log(a,'--uname')  //遍历打印}let iterator = Uname[Symbol.iterator]() //进行迭代器赋值//利用迭代器输出内容  iterator.next()  表示下一个  下一个console.log(iterator.next())//{value: '搜到', done: false}console.log(iterator.next())//{value: '的撒', done: false}console.log(iterator.next())//{value: '的风格', done: false}console.log(iterator.next())//{value: '范德萨', done: false}console.log(iterator.next())//{value: '公司发', done: false}console.log(iterator.next())//{value: '告诉对方', done: false}console.log(iterator.next())//{value: 'undefined', done: true}

 

生成器

// 生成器function* fun2(arg) {// 打印arg包裹的数据console.log(arg)//定义初始变量let A = yield '一直没有耳朵'; let B = yield '一直没有尾巴';let C = yield '真奇怪';console.log(A) //打印A对应的next里边的数据 console.log(B) //打印B对应的next里边的数据 }let tor = fun2('aaa') //进行生成器赋值console.log(tor.next())  //第一个不被打印输出 所以留出即可console.log(tor.next('sljds'))console.log(tor.next('sal'))console.log(tor.next())

定时器

  // 定时器// 定义函数  包裹定时器  定义初始内容function get(){setTimeout(()=>{let data = '啥了'iterator.next(data)// 利用iterator.next 迭代器 控制data输出},100)}function kl(){setInterval(()=>{let data = 'kkkkk'iterator.next(data)},11)}

map 映射

     // // Map 映射 键值对的形式  一一对应 可以是各种形式的对应// // 一let m1 = new Map()  //m1 一个新的映射m1.set('name','zmy')  //m1 新增一个 name => zmyconsole.log(m1) //Map(1) {'name' => 'zmy'}// 二let m2 = new Map()m2.set('kl',function(){console.log(m2)})console.log(m2) //Map(1) {'kl' => ƒ}// 三let m3 = new Map()let ll = {s:'asdj'}m3.set('ll',"lolo")console.log(m3) //Map(1) {'ll' => 'lolo'}

 

循环 for   array.for 

   let i = 0for(let i=0;i<10;i++){console.log(i)}// a of b 循环let Uname = ["搜到", "的撒", "的风格", "范德萨", "公司发", "告诉对方"];for(let a of Uname){console.log(a)  //搜到  的撒 的风格 范德萨 公司发 告诉对方}// Array.from遍历let arrayLike = {'0': 'T','1': 'h','2': 'i','3': 'n','4': 'k',length: 5 //控制遍历几个};const arr = Array.from(arrayLike) //遍历console.log(arr) //['T', 'h', 'i', 'n', 'k']// 索引遍历  a of b for (let index of arr.keys()) {console.log(index);}

 

对象字面量

      // // 对象字面量  添加数据的方法var expertise = 'slslos'  //定义一个变量var Person = {     name : 'ai',age:12,// [expertise]:  是简写属性  不可和计算属性 同时使用[expertise]:{   //[expertise]这样写 就是相当于在的expertise基础上加东西yue:2,inko:['sdjso','sdhs']}}console.log(Person)// // 调用别的对象属性// var grou = {//     id :'hd',//     name:'ds'// }// var klkl ={//     [grou] :grou,  //全部数据  //     [grou.id] :grou.id, //单个数据//     kl:'asjlaj'    //后添加的数据// }// console.log(klkl)

 

私有属性

  // 私有属性  { # }class person{// 共有属性name;// 私有属性#age;//构造方法constructor(name,age){this.name = namethis.#age = age}cos(){console.log(this.name,'共有属性')console.log(this.age,'私有属性')}}var girl = new person('loskd',99)console.log(girl)girl.cos() //私有属性不可访问

 

构造函数继承

  // // 构造函数式继承  { extends  继承父的所有元素}class phl{//构造方法constructor(name,price){this.name = namethis.price = price}cla(){console.log('我可以改变世界')}}//   const mi = new phl(133, '小米', 'red', 4.7)//   console.log(mi);//   mi.cla()class smallcall extends phl{//   构造方法记得把需要的父的内容constructor一下啊constructor(price, name, color, size) {super(price, name) //调用父类的constructor方法this.color = colorthis.size = size}cla(){console.log("sdjfs")}}const mi = new smallcall(133, '小米', 'red', 4.7)console.log(mi);mi.cla()//输出 子的cla

 

promise async await

 // promise async awaitasync function foo(){var a = await new Promise((res) =>{ //创建新的Promise setTimeout(()=>{res("正确输出")    //定时器输出正确的内容},200)});console.log(a)       //打印try{       //继续 连续var b = await new Promise((res,rej)=>{  setTimeout(()=>{rej('错误输出')   //输出错误},99)                })}catch(b){                //错误监听返回和then原理差不多console.log(b)}var ses = await new Promise((res) =>{  //创建新的Promise setTimeout(()=>{res('ses')},880)})var c= await 'ljds'                 //修改输出的内容console.log(c)                      //打印新的内容console.log(ses)                    //原有的内容}foo()//执行foo()// 数据二使用数据一的数据async function getData() {// 假装请求数据1var data1 = await new Promise((resolve) => {setTimeout(() => {resolve('data1');  //定时器输出正确的内容}, 1000);});// return data1  //返回data1就是直接输出data1的数据// console.log(data1); // // 假装请求数据2且此请求依赖数据1return new Promise((resolve) => {   //返回新的promisse然后继续使用setTimeout(() => {resolve('data2');           //输出正确的内容}, 1000);});}getData().then((v) => {  //监听getData的数据变化  V就是一个形参没有意义 console.log(v);});

​​​​​​​ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/209575.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Zookeeper系列-4.Watcher原理

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

【LeetCode热题100】【双指针】盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 示例…

如何往excel中写子表?

with pd.ExcelWriter("C:/last_date.xlsx") as writer:for i in range(0, 10):df pd.DataFrame()df.to_excel(writer, indexFalse, sheet_namestr(days[i 1]))

【高效开发工具系列】gson入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

医院不良事件报告系统源码带鱼骨图分析

医院不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0c;帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件…

肺癌二期治疗效果与方案

肺腺癌II期治疗方案主要包括手术治疗、化疗、放疗等&#xff0c;建议患者积极配合医生治疗。 1、手术治疗 肺腺癌属于肺部恶性肿瘤&#xff0c;生长速度比较缓慢&#xff0c;早期患者可以通过手术的方式切除病变部位&#xff0c;能够达到根治目的&#xff0c;术后患者要注意伤…

CTF特训日记day3

复现一下RWCTF5th shellfind题目 题目描述如下&#xff1a; Hello Hacker. You dont know me, but I know you. I want to play a game. Heres what happens if you lose. The device you are watching is hooked into your Saturday and Sunday. When the timer in the back …

没有哈希时间锁定合约的跨链原子交换

在上一篇文章中&#xff0c;我们介绍了使用哈希时间锁定合约&#xff08;HTLC&#xff09;的跨链原子交换实现。 今天&#xff0c;我们介绍一种无需 HTLC 即可实现的替代方法。 这将原子交换扩展到缺乏哈希锁和时间锁的区块链。 使用 SPV 证明交易已被挖掘 让我们按照商定的价…

支撑材料-软件项目质量保证措施-资料大全

一、 质量保障措施 二、 项目质量管理保障措施 &#xff08;一&#xff09; 资深的质量经理与质保组 &#xff08;二&#xff09; 全程参与的质量经理 &#xff08;三&#xff09; 合理的质量控制流程 1&#xff0e; 质量管理规范&#xff1a; 2&#xff0e; 加强协调管理…

【23-24 秋学期】NNDL 作业11 LSTM

习题6-4 推导LSTM网络中参数的梯度&#xff0c; 并分析其避免梯度消失的效果 习题6-3P 编程实现下图LSTM运行过程 李宏毅机器学习笔记&#xff1a;RNN循环神经网络_李宏毅rnn笔记_ZEERO~的博客-CSDN博客https://blog.csdn.net/weixin_43249038/article/details/132650998 L5W…

Spring-AOP与声明式事务

为什么要用AOP ①现有代码缺陷 针对带日志功能的实现类&#xff0c;我们发现有如下缺陷&#xff1a; 对核心业务功能有干扰&#xff0c;导致程序员在开发核心业务功能时分散了精力 附加功能分散在各个业务功能方法中&#xff0c;不利于统一维护 ②解决思路 解决这两个问题&…

Python基础快速过一遍

文章目录 一、变量及基本概念1、变量2、变量类型3、变量格式化输出4、type()函数5、input()函数6、类型转换函数7、注释 二、Python运算/字符1、算数运算2、比较运算3、逻辑运算4、赋值运算符5、转义字符6、成员运算符 三、判断/循环语句1、if判断语句2、while循环语句3、for循…

【ret2user】InCTF2021-Kqueue

前言 这题给了源码&#xff0c;感觉代码的问题很大。然后题目不算难&#xff0c;但是最后 ret2user 执行的代码很有意思。这里的思路是参考的 Roland_ 大佬的思路&#xff1a;[原创]InCTF 内核Pwn之 Kqueue-Pwn-看雪-安全社区|安全招聘|kanxue.com 最后不去泄漏 kernel_offse…

IDEA构建springBoot新项目时JDK只有17和21,无法选择JDK8解决方案

今天创建springboot新项目时&#xff0c;发现IDEA里JDK选项只有17和21&#xff0c;无法选择本机的JDK8&#xff0c;网上查资料后发现是springboot2.7于11.24号后停止维护&#xff0c;基于2.7和java8的spring Initializ官方不再维护&#xff0c;解决方案是在server URL栏&#x…

STM32CubeIde 实现printf打印输出

STM32CubeIde 实现printf打印输出&#xff0c;在IDE生成的程序的main中的/* USER CODE BEGIN 4 /和/ USER CODE END 4 */之间放下面代码&#xff1a; #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #define GETCHAR_PROTOTYPE int __io_getchar(FILE *…

集线器-交换机-路由器

1.集线器(Hub) 集线器就是将网线集中到一起的机器&#xff0c;也就是多台主机和设备的连接器。集线器的主要功能是对接收到的信号进行同步整形放大&#xff0c;以扩大网络的传输距离&#xff0c;是中继器的一种形式&#xff0c;区别在于集线器能够提供多端口服务&#xff0c;也…

OpenGL 和 OpenGL ES 2.0/3.X 一致性测试说明(CTS)

本文档介绍如何构建、移植和运行 OpenGL 和 OpenGL ES 2.0/3.X 一致性测试&#xff0c;以及如何验证和提交测试结果。 [TOC]目录 测试环境要求 一致性测试需要文件系统。文件系统需要支持长文件名&#xff08;即 > 8.3 名称格式&#xff09;。一致性测试中的源文件使用大…

面试题:MySQL为什么选择B+树作为索引结构

文章目录 前言二、平衡二叉树(AVL)&#xff1a;旋转耗时三、红黑树&#xff1a;树太高四、B树&#xff1a;为磁盘而生五、B树六、感受B树的威力七、总结 前言 在MySQL中&#xff0c;无论是Innodb还是MyIsam&#xff0c;都使用了B树作索引结构(这里不考虑hash等其他索引)。本文…

Redis命令详解

文章目录 Key&#xff08;键&#xff09; DEL EXISTS EXPIRE EXPIREAT PEXPIRE PEXPIREAT PERSIST KEYS TTL PTTL RENAME RENAMENX TYPE SCAN HSCAN SSCAN ZSCAN DUMP String&#xff08;字符串&#xff09; SET GET INCR DECR MSET MGET APPEND SETNX STRLEN INCRBY DECRBY IN…

opencv知识库:cv2.add()函数和“+”号运算符

需求场景 现有一灰度图像&#xff0c;需求是为该图像增加亮度。 原始灰度图像 预期目标图像 解决方案 不建议的方案——“”运算符 假设我们需要为原始灰度图像的亮度整体提升88&#xff0c;那么利用“”运算符的源码如下&#xff1a; import cv2img_path r"D:\pych…