• 箭头函数


    //箭头函数
    //格式()=>{}
    1.最简单的形式:
    1  const fn =()=>{
    2     console.log('胡66!')
    3    }
    4    fn();

    上面输出:胡66.

    2.带参数的箭头函数

    1 const sum = (num1,num2) => {
    2     return num1+num2;
    3    }

    3.如果函数只有一句代码,箭头函数大括号可以省略

     const sum1 = (n1,n2)=> n1+n2;//箭头后面的表示return的值

    4.在箭头函数中,如果形参只有1个,可以省略小括号

    const sum2 = n=> n;//表示返回一个参数n

    5.箭头函数的this

    (1)箭头函数不绑定this,箭头函数的this指向,取决于函数定义的位置,谁调用了它,this就指向谁。
    1 const sum = (num1,num2) => {
    2     console.log('sum的this:'+this)
    3     return num1+num2;
    4    }
    sum();//由于这里调用sum的对象是window,所以这里打印的this指向的是window

     (2)用bind改变了this的指向,所以箭头函数的this指向也会改变

     1  const obj={name:'胡88'}
     2    function fnn(){
     3        console.log(this);
     4         return ()=>{
     5         console.log("箭头函数的this")
     6         console.log(this)
     7         console.log("箭头函数的this")
     8         }
     9    }
    10    const the = fnn.bind(obj);//bind改变fnn的this指向
    11    the();//虽然这里还是window调用了fnn函数,但是上面的bind已经改变了函数的调用对象,实际调用fnn的是obj这个对象,所以这里的this指的是obj
    12    o = fnn();//将fnn赋给变量o
    13    o();//指向函数o,这里的this指向的还是window    

    上面的(1)的箭头函数定义在全局中,它的this对象指向的是window,(2)中的箭头函数定义在函数中,它的this指向与它的父函数一样,谁调用

    它的父函数,箭头函数的this就指向谁。

    不管怎么说,上述的箭头函数都是定义在可以定义作用域的域中。

    7.要是箭头函数定义在对象中呢,因为对象没有作用域,那么this指向的是谁呢?

    1 var obj1 = {
    2        age:20,
    3        say:()=>{
    4            alert(this.age)
    alert(this)//这里的this指的是调用对象
    5 } 6 }
    obj1.say()//这里弹出的this.age会是20吗???

    上述obj1.say()弹出的this.age会是undefined,因为调用者window中没有age.

    修改形式(1)

    可以将上面改为下面形式,在全局中定义变量age=100:

    1   var age = 100
    2    var obj1 = {
    3        age:20,
    4        say:()=>{
    5            alert(this.age)
    6        }
    7    }
    8   obj1.say();

    上述obj1.say()弹出的this.age会是100,因为调用者window的作用域是全局,全局下的age=100.

    穷则独善其身,达则兼济天下……
  • 相关阅读:
    基于S3C2410的VIVI移植
    Android 多媒体
    target连上ubuntu,打adb shell后出现insufficient permissions for device错误
    git 学习
    ubuntu10.04中文乱码问题解决方法
    构建MINI2440开发板Ubuntu开发环境串口配置及使用
    如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误
    android Notification 学习
    Android declarestyleable:自定义控件的属性(attr.xml,TypedArray)的使用
    ubuntu 11.04 中的bug 渐显滚动条
  • 原文地址:https://www.cnblogs.com/hmy-666/p/12607776.html
Copyright © 2020-2023  润新知