ES8新特性(2017)

1,121 阅读2分钟
async和await

简单来说是基于promise的语法糖,通过使用他们,异步代码看起来更像是同步代码,是异步编程的终极解决方案,async关键字放在函数声明的前面,使其成为异步函数 async函数返回值为promise,而不是直接返回值,可以在异步函数里面使用await关键字

await关键字只能在async函数里 使用,他会在程序运行到该地方的时候等待异步代码执行

    function request(url){
        return new Promise(resolve=>{
            axios.get(url).then(ok=>{
                resolve(url)
            })
        }
    }
    
    async function getData(){
        let res1=await request('dizhi1')
        let res2=await request('dizhi2')
        let res3=await request('dizhi3')
    }
Object.values()

获取对象自身可枚举属性的每一个属性值,返回收集完成后的数组

Object.values(obj)

参数:被返回可枚举属性值的对象。

    let a={a:1,b:2,c:3};
    console.log(Object.values(a)) //[1, 2, 3]
    console.log(Object.keys(a)) //['a', 'b', 'c']
Object.entries()

获取对象自身可枚举属性的每一组键值对,返回收集完成后的数组

Object.entries(obj)

参数:可以返回其可枚举属性的键值对的对象。

    let a={a:1,b:2,c:3};
    console.log(Object.entries(a)) //[['a',1],['b',2],['c',3]]
Object.getOwnPropertyDescriptors()

用来获取一个对象的所有自身属性的描述 { configurable:描述符本身是否可以被修改,是否可以被删除 enumerable:属性的值是否为可枚举 value: 属性值 writable: 属性的值是否可以修改 },

Object.getOwnPropertyDescriptors(obj) 参数:任意对象

    let a={a:1,b:2,c:3};
    console.log(Object.getOwnpropertyDescripts(a))
    {
       a:{
          configurabletrue
          enumerabletrue
          value1
          writabletrue
         },
       b:{
         configurabletrue
         enumerabletrue
         value2
         writabletrue
         },
      c:{
         configurabletrue
         enumerabletrue
         value3
         writabletrue
         }
     }
String.prototype.padStart()

用另一个字符串填充当前字符串(填充到前面),返回值为填充后的内容

str.padStart(targetLength [, padString])

参数:

  • targetLength: 目标长度(需要填充到的,如果小于当前字符串 则返回当前字符串本身)
  • padString:填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧 的部分,其他部分会被截断。此参数的默认值为 " "
    let a='a'
    a.padStart(2,'b')//ba
    a.padStart(12,'b')//bbbbbbbbbbba
    a.padStart(0,'b')//a
    a.padStart(2,'basdasdas')//ba
String.prototype.padEnd()

用另一个字符串填充当前字符串(填充到后面),返回值为填充后的内容

str.padEnd(targetLength [, padString])

参数:

  • targetLength: 目标长度(需要填充到的,如果小于当前字符串 则返回当前字符串本身)
  • padString:填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧 的部分,其他部分会被截断。此参数的默认值为 " "
    let a='a'
    a.padEnd(2,'b')//ab
    a.padEnd(12,'b')//abbbbbbbbbbb
    a.padEnd(0,'b')//a
    a.padEnd(2,'basdasdas')//ab