美文网首页
箭头函数

箭头函数

作者: LuckyJin | 来源:发表于2020-07-07 17:17 被阅读0次

    箭头函数

    特点:
    1、this指向离自己最近的外层作用域的对象;
    2、不能当做构造函数使用(箭头函数是匿名函数,没有函数名字,没办法new);
    箭头函数中的this指向的是定义时的this,而不是执行时的this

    //语法一:function换成了 ()=>
    var fn=(a)=>{
    console.log(a)
    }
    fn(10)
    
    //语法二  不写{}默认表示return,当前函数意思是返回a这个值
    var fn=a=>a;
    fn(10)
    
    //语法三 不写{}表示return,当前函数意思是返回一个对象
    var fn=a=>({a:1});
    fn()
    
    

    和普通函数的区别

    不绑定this
    不绑定this的意思就是说:箭头函数的this是在定义的时候就确定好的,以后不管怎样调用箭头函数,箭头函数的this始终未定义的this

    不绑定arguments
    箭头函数还有一个比较有特点的地方就是其不绑定arguments,即如果你在箭头函数中使用arguments参数不能得到想要的内容。

    什么时候最好不要使用箭头函数

    作为对象的方法
    最好不要在对象的方法中使用箭头函数,这样可能会导致一些问题的产生。除非你很熟悉箭头函数。

    let obj = {
      myVar: 'foo',
      
      myFunc: () => { 
        console.log(this.myVar)  
      }
    }
    obj.myFunc() // undefined
    

    不能作为构造函数
    由于箭头函数的this不绑定的特点,所以不能使用箭头函数作为构造函数,实际上如果这样做了,也会报错。
    经典的函数表达式可以用来构造这样一个新对象,但是箭头函数没有prototype 原型。不能new

    let Person = function(name, height) {
      this.name = name
      this.height = height
    }
    Person.prototype.hello = function() {
      console.log('Hi, my name is ' + this.name)
    }
    let alice = new Person('Alice', 1.7)
    alice.hello() // Hi, my name is Alice
    

    定义原型方法

    相关文章

      网友评论

          本文标题:箭头函数

          本文链接:https://www.haomeiwen.com/subject/viczqktx.html