es6之箭头函数

127 阅读2分钟

箭头函数

要学箭头函数先搞明白普通函数的this

箭头函数的this

  • 箭头函数没有自己的this
  • 箭头函数中会在定义函数时绑定this,而不是在执行函数时绑定this(与普通函数刚好相反)
  • 定义函数时绑定this,意思就是无中生有,会把上级作用域的this继承过来
  • 执行函数时绑定this,意思就是谁调用函数,函数的this就指向谁
let obj = {
    a: 1,
    func:() => console.log(this.a), //这里的上级作用域是window,所以这里a为100
    func1:function(){               
        console.log(this)          //这里this是obj对象,因为func1是普通函数所以这里的this还是隐式绑定的喔
        //下面箭头函数要继承的this就是上面这个啦,所以下面的a就是1
        return () => console.log(this.a)
    }
}
var a = 100
//--------------------华丽的分割线----------------------

obj.func()           //不再是谁调用函数就指向谁了,箭头函数会把上级作用域的this继承过来  
let b = obj.func1() //注意哦,这里加了(),相当于执行了函数func1并return了一个箭头函数  
b()                //这里开始执行箭头函数

箭头函数基本用法

const  arrowFunc = (a) => {
    console.log(a)
}
arrowFunc(1) //结果就是打印1
// 如果只有一个参数,可以不加括号,如果函数里面只有一行代码可以不加{},等于下面这样
const arrowFunc = a => console.log(a)

箭头函数的注意事项

  1. 不能作为构造函数,因为new的时候需要将this指向实例对象,而箭头函数没有自己的this
  2. 箭头函数没有arguments(js内置对象,存放实参)
  3. 箭头函数没有自己的this,所以不能用call()/apply()/bind()改变this指向
  4. 箭头函数没有原型对象