当前位置: 首页 > news >正文

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);});

​​​​​​​ 

相关文章:

  • 【【FPGA的 MicroBlaze 的 介绍与使用 】】
  • MacBook续命,XCode硬盘占用问题
  • “分割“安卓用户,对标iOS,鸿蒙崛起~
  • HTTP常见响应码
  • 医院不良事件报告系统源码带鱼骨图分析
  • flutter开发实战-readmore长文本展开和收缩控件
  • Vector Quantized Diffusion Model for Text-to-Image Synthesis
  • Java数组面试题
  • zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程
  • 鸿蒙4.0开发笔记之ArkTS语法基础的UI描述、基础组件的使用与如何查看组件是否有参数(八)
  • 「Swift」类淘宝商品瀑布流展示
  • 【Java系列】函数式接口编程
  • 免费百度SEO优化工具,百度SEO优化排名工具
  • 毕设:《基于hive的音乐数据分析系统的设计与实现》
  • mysql的几种索引
  • 08.Android之View事件问题
  • java 多线程基础, 我觉得还是有必要看看的
  • Javascript 原型链
  • JS+CSS实现数字滚动
  • js作用域和this的理解
  • Laravel Telescope:优雅的应用调试工具
  • PhantomJS 安装
  • Redash本地开发环境搭建
  • VUE es6技巧写法(持续更新中~~~)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 编写符合Python风格的对象
  • 初识MongoDB分片
  • 分布式事物理论与实践
  • 分类模型——Logistics Regression
  • 类orAPI - 收藏集 - 掘金
  • 排序(1):冒泡排序
  • 深入 Nginx 之配置篇
  • 使用 Docker 部署 Spring Boot项目
  • 通过npm或yarn自动生成vue组件
  • 微信小程序填坑清单
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • mysql面试题分组并合并列
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 选择阿里云数据库HBase版十大理由
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • # include “ “ 和 # include < >两者的区别
  • ###STL(标准模板库)
  • #WEB前端(HTML属性)
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (算法)Travel Information Center
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)Neo4j下载安装以及初次使用
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • .gitignore文件设置了忽略但不生效
  • .NET 4.0中的泛型协变和反变
  • .net/c# memcached 获取所有缓存键(keys)