解构赋值 箭头函数 this指向问题 对象解构赋值

# 解构赋值

## 数组解构赋值

```js
        /**
         简介:
            按照一定的模式,从数组和对象中提取值。(对变量的赋值)
    
        */
       //数组的解构赋值
       var ary=["姜维","魏延","诸葛亮"];
        // var [str1,str2,str3]=ary; 
        // console.log(str1);
        // console.log(str2);
        // console.log(str3);

        //解构不成功,变量的值为:undefined
        var [a,b,c,d]=ary;
        console.log(d);
        //不完全解构
        var [n1,n2]=ary;
        console.log(n1);
        //如果等号右边不是数组(确定的说时不能遍历的结构),那么会报错
        var [s1]={};
        var [s1]=1;
        var [s1]="刘备";
        //true,function(){},undefined,NaN,null
```
## 对象解构赋值

```js
       /**
         * 对象的解构赋值:允许使用变量名,匹配对象中的属性名,匹配成功
         * 会把该属性的值赋值给变量
         *
         * 
        */
       //对象解构赋值第一种方式:
        let obj={
            uname:'张飞',
            age:18
        }
        let {uname,age}=obj;
        console.log(uname);
        console.log(age);
        //对象解构赋值第二种方式:
        let {uname:myName,age:myAge} =obj;
        console.log(myName);
```
# 箭头函数

```js
   /**
     * 箭头函数:
     *  定义函数的语法,简化了函数定义的方式
     * 方式1: 
     * function 函数名(){
     *  }
     * 方式2:箭头函数
     *  语法:(参数1,参数2.....) => {}
     * 特点:
     *      1、在箭头函数中,如果{}里面只有一句代码,并且这个代码是函数的返回值。
     *          那这个{}可以省略,return可以省略
     *       2、如过参数只有1个,可以省略小括号

    */

       const fn= (num1,num2) => {
            return num1+num2
        }

        const fn= (num1,num2) =>  num1+num2
        let sum=fn(2123,123); //调用函数
        console.log(sum);
        const fn1= num => {
            console.log(num)
        }
        fn1(100);
        
        function fn(){
            console.log(this);   // obj
               return () => {
                console.log(this); //obj
            }
        }
        let obj={uname:"孙权"};
        /** 
         * call方法:立即调用函数,并且改变this的指向
         *            this指向谁,由传入的参数决定
         * */
        let fn2= fn.call(obj); 
        fn2();
```
## this指向问题

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="btn1">调用普通函数</button>
    <button id="btn2">调用箭头函数</button>
    <script>
      /** 
    注意点:
     *      箭头函数this的绑定的问题?
     *      function(){} 这里面this指向的谁?谁调用我指向谁
     *      箭头函数this指向:箭头函数定义位置中的this
     **/  
    let bnt1=document.getElementById("btn1");
    let bnt2=document.getElementById("btn2");
    btn1.onclick=function(){
        console.log(this);  //btn1
    }
    btn2.onclick= () => {
        console.log(this); //window
    }
    </script>
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值