zoukankan      html  css  js  c++  java
  • es6常用特性

    一、箭头函数(Arrow Functions)

    1、定义

    a => a+b;//也可以写成 (a,b) => a+b

    这相当于:

     function (a,b) {
            return a+b
        };

    箭头函数实际上就是用‘=>’代替了关键字function。

    2、this指向问题

    箭头函数与普通函数this指向是不同的,普通函数中this指向的就是使用这个函数的对象,而箭头函数this指向的就是定义时所在的window对象。

     //普通函数中this指的就是当前使用它的对象,也就是P对象
        var P={
            name:'p',
            f:function () {
                console.log(this) //{name: "p", f: ƒ}
            }
    
        };
    
    //在普通函数中定义箭头函数,this指向的仍旧是P对象
      var P={
        name:'p',
        f:function () {
          window.addEventListener('click',() =>{
            console.log(this)  //this指的是P对象 {name: "p", f: ƒ}
          })
        }
    
      };
    
        p=P.f();

    箭头函数指向的就是当前所在的window对象。

      var P={
        name:'p',
        f:()=> {
          console.log(this)//Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …}
        }
    
      };
    
      p=P.f()

    3、对象的单体模式

    上面可以看出,箭头函数比普通函数方便,但是存在的问题就是thsi指向的问题,那么如何将它的this指向与普通函数一样呢?可以使用对象的单体模式。

    //对象的单体模式
        var P={
            name:'p',
            f(){
                console.log(this)//{name: "p", f: ƒ},this指向的就是P对象
            }
    
        };
        p=P.f()

    二、async函数

    async使异步任务的处理方式变成线性,异步代码变得更容易,更具可读性,比如普通函数:

    deluser(context,object){   
      
        axios.get('...') .then((response) => { // handle success }) .catch((error) => { // handle error }) .finally(() => { // always executed });
    }

    很明显,这种需要进行回调函数,可读性相对差些。而使用async函数

        async delUser(context, object) {
          
          const res = await axios.delete(`crm/user/${object.userId}`);//返回的结果使用res进行接收
    
          }
        },

    一个异步函数由两部分构成:

    (1)以async为前缀

    (2)在异步函数内使用await关键字调用异步操作函数,注意await的位置

    异步函数遇到await关键字暂停,直到执行axios请求后再执行下面的操作。

    三、解构

    1、定义

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。

    以前,为变量赋值,只能直接指定值。

    let a = 1;
    let b = 2;

    现在,可以这样使用:

    let [a, b,] = [1, 2 ];

    2、嵌套对象解构

    这个可以对后台返回的数据进行结构,包括嵌套对象以及数组:

    response = {"data": ser.data, 
        "meta": {
                    "message": "用户创建成功", 
    "code": 2000}}        

    对返回的data进行解构:

     const {data, meta: {message, code}} = res.data;

    四、默认和剩余参数

    1、默认参数

     之前使用默认值创建参数:

    function f1(x,y){
    
         var x = x || 10
         var y = y || 10
      
         return x * y
    
    }

    在es6中支持这种方式创建默认值参数:

    function f1(x=10,y=10){
    
         return x * y
    
    }

    2、剩余参数

    ES6中支持将函数参数转换成数组的形式。

      function f2(...theNumbers){
        
    // get the sum of the array elements
        console.log(theNumbers)  //[1,2,3,4]
        
        return theNumbers
    
      }
      
      f2(1,2,3,4,)

      通过在命名参数前添加3个点 ...,在该位置和之后输入到函数中的参数将自动转换为数组。Rest parameters 只能应用于函数的参数的第一个子集,像如下情形,它只会将参数从第二个开始转换为数组:

      function f2(x, ...theNumbers){
    
      // get the sum of the array elements
        console.log(x) //1
          console.log(theNumbers)  //[2,3,4]
    
          return theNumbers
    
        }
    
        f2(1,2,3,4,)

    五、模板字符串

    传统的 JavaScript 语言,输出模板通常是这样写的:

    <script>
    
      var a =1,b=2;
    
      var str="num is" + a +","+"num is" + b; //num is1,num is2
      console.log(str)
    
    </script>

    这种方式很明显繁琐,es6提供了模板字符串的功能:

    <script>
        var a =1,b=2;
        var str=`num is ${a},num is ${b}`; //使用${}渲染值,`是键盘左上角esc键下边的键
        console.log(str)
    
    </script>
  • 相关阅读:
    touch命令
    cd命令
    通配符
    速查命令
    一些技巧
    从零开始用 Flask 搭建一个网站(四)
    【老板来了你立刻知道!】人脸识别+手机推送
    React Native 一些事
    React-Native 工程添加推送功能 (iOS 篇)
    集成 jpush
  • 原文地址:https://www.cnblogs.com/shenjianping/p/11446013.html
Copyright © 2011-2022 走看看