百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Es6基础语法

toyiye 2024-06-28 10:09 12 浏览 0 评论

ES6 函数

1、this :this代表当前正在执行的对象

function fn () {
  console.log(this)
}
fn() // window 
const obj = new fn();  // { }
fn.call({ name:"1" })  // { name:'1' }

2、箭头函数
(1)箭头函数的this是在定义的时候就固定不变了
(2)箭头函数 没有自己的this
(3)箭头函数 不能当类(构造器)使用 不可以 new
(4)箭头函数 没有 arguments

  const fn = () => {
    console.log(this);
    console.log(arguments);
  }
  fn()   // undefined    严格模式下    在非严格模式下是 window 
  const obj = new fn();  // undefined

new 一个实例 执行 4 步
(1)创建一个空对象
(2) 执行构造器 Person 把this指向这个 {}
(3) 添加属性
(4) 返回当前实例
fn.call({ name:"1" }) // undefined

3、怎么改变this的指向

call ()

  function person (params) {
     this.name = params
     console.log(this.name);    //  27
   }
   person.call({},27)

bind ()

  function person (params) {
    this.name = params
     console.log(this,this.name);    //  27
   }
   const fn2 = person.bind({age:22},'小花')
   fn2()

ES6 数组 方法

map filter some forEach every find findIndex reduce
1、 map 返回一个新数组 长度不变

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.map(v => v+1)  // [2, 4, 6, 8, 10]

  const newArr = arr.map(v => v>3)   //[false, false, true, true, true]

  const newArr = arr.map(v => v>3 && v)   //[false, false, 5, 7, 9]

2、filter 返回一个新数组 长度改变 过滤

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.filter(v => v>3)    //  [5, 7, 9]

3、 some 只要返回true 就会停止循环

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.some(v => v===7)    //  返回true  循环了3次

4、 every 只要返回false 就会停止循环

  const arr = [1, 3, 5, 7, 9]

  const newArr = arr.every(v => v===7  )    // 只执行了1次   返回false

5、 foeEach 普通循环 没有返回值

  const arr = [1, 3, 5, 7, 9]

  arr.forEach(v => {

    console.log(v);  //  1, 3, 5, 7, 9

  }) 

6、 find 为true的时候就会停止循环 返回 当前的值

  const data = [{name:'1',id:1}, {name:'2',id:2}, {name:'3',id:3}]

  const newObj = data.find(v => v.id===2)

  console.log(newObj);        //  {name:'2',id:2}

7、 findIndex 为true的时候就会停止循环 返回 当前的值的下标

  const data = [{name:'1',id:1}, {name:'2',id:2}, {name:'3',id:3}]

  const newObj = data.find(v => v.id===2)

  console.log(newObj);        //  返回 1

8、 reduce 两个参数 (函数[必须有return],默认值)
(1)无默认值


  const arr = [1, 3, 5, 7, 9]

  const sum=arr.reduce((a,b)=>{

    return a+b

    // a ->1  b->3         第1次

    // a ->4  b->5         第2次

    // a ->9  b->7  ....   第..次

  })

  console.log(sum);      // 25

(2)有默认值


const arr = [1, 3, 1, 7, 5, 7, 9]

    // a ->{}  b->1              第1次

    // a ->{1:[1]}  b->3         第2次

    // a ->{1:[1],3:[3]}  b->1   第3次

    // a ->{1:[1,1],3:[3]}  b->7   第4次  ....

  const newObj = arr.reduce((a,b)=>{

           if (a[b]) {   a[b].push(b)   } else {   a[b] = [b]   }

           return a

  }, {})

  console.log(newObj);  //{1:[1, 1],3:[3],5:[5],7:[7, 7],9:[9]}

(3)在antd 3.26 表单回填应用


  mapPropsToFields({ obj }) {

     return Object.keys(obj).reduce((pre, d) => {

        return {

         ...pre,

         [d]: Form.createFormField({ value: obj[d] })

        }

      }, {})

   },

9、数组的扩展运算符 ...

  const arr = [1, 2, 3]

  const brr = [4, 5, 6]

  console.log([...arr,...brr]);  // [1,2,3,4,5,6]

10、 fill 填充数组

  const str=new Array(50).fill('-').join('')

  console.log(str);  //  ---------------------

11、includes 是否包含

  const arr = [1, 2, 3]

  console.log(arr.includes(2))   // true

12、flat 数组扁平化

  const arr = [1, [2, [3,4] ] ]

  //  默认二维数组扁平化

  console.log(arr.flat() )   // [1,2,[3,4] ]

  //  Infinity 多维数组扁平化

  console.log(arr.flat(Infinity) )  // [1,2,3,4]   

13、Set 数组去重

   let crr= [1,2,1,3,4,5,1,2]

   console.log([...new Set(crr)]);    //  [1,2,3,4,5]

ES6 对象 方法

1、Object.assign(新对象,对象1,对象2,..) 合并对象
注: 是个浅拷贝

   const obj1 = { name:"小花" }

   const obj2 = { age:20 }

   Object.assign(obj1,obj2) // 浅拷贝   { name:"小花", age:20 }

   //{...obj1,...obj2}        // 浅拷贝   { name:"小花", age:20 }

2、keys 取到所有的key值 values 取到所有的value值

   const obj = { name:"小花", age:20, sex:"男" }

   console.log(Object.keys(obj));  // ["name", "age", "sex"]

   console.log(Object.values(obj)); //  ["小花", 20, "男"]

3、Object.entries( )

  const obj = { name:"小花", age:20, sex:"男" }

  Object.entries(obj)   // [ ["name", "小花"],["age", 20],["sex", "男"] ]

取出对象里的所有key 和 value

(1)、reduce

       Object.entries(obj).reduce((v,[key,value])=>{
              console.log(key,value)           // name 小花  age 20  sex 男
        },'')

(2)、for of

        for(let [key,value] of Object.entries(obj)) {
             console.log(key,value)           // name 小花  age 20  sex 男
        }

ES6 Promise

1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。

2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。

image

(1)、特点:处理异步 异步的代码以同步的方式

(2)、用法 :
new Promise((resolve,reject)=>{ resolve() 成功 reject() 失败 })
(3)、状态:进行中 已成功 已失败 (一旦固定就不会再改变)

1、 Promise.all() -- 用于将多个 Promise 实例,包装成一个新的 Promise 实例 两个promise一起触发

const url = "http://api.baxiaobu.com/index.php/home/v1/register"

const param = qs.stringify({

  username:"1111",

  pwd:"222"

})

const fn0 = () => axios.post(url,param)

const fn1 = () => axios.post(url,param)

const p0 = Promise.all([fn0(),fn1()])

p0.then(res=>console.log(res))

.catch()

2、 async 和函数一起用 函数里需要异步方法前面加上 await
await 不止异步 任何值 两个promise逐步触发

const URL="https://blogs.zdldove.top/Home/Apis/listWithPage"
async function fn () {
    const res0 = await axios.post(URL)
    console.log(1);
    const res1 = await axios.post(URL)
    console.log(res0,res1);
}
fn()

3、async 原理
async === generator + 自动执行器

function spawn (genF) {
  return new Promise((resolve, reject) => {
    const gen = genF()
    function step (nextF) {
      let next = nextF()
      if(next.done) {
         return resolve(next.value)}    
         Promise.resolve(next.value)
          .then(v => {
             step(() => gen.next(v))
          })
      }
    step(() => gen.next(undefined))
  })
}

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码