1、没有自己的this、super、arguments和new.target绑定。
    2、不能使用new来调用。
    3、没有原型对象。
    4、不可以改变this的绑定。
    5、形参名称不能重复。

    箭头函数中没有this绑定,必须通过查找作用域链来决定其值。 如果箭头函数被非箭头函数包含,则this绑定的是最近一层非箭头函数的this,否则this的值则被设置为全局对象。

    1. var name = 'window';
    2. var student = {
    3. name: '若川',
    4. doSth: function(){
    5. // var self = this;
    6. var arrowDoSth = () => {
    7. // console.log(self.name);
    8. console.log(this.name);
    9. }
    10. arrowDoSth();
    11. },
    12. arrowDoSth2: () => {
    13. console.log(this.name);
    14. }
    15. }
    16. student.doSth(); // '若川'
    17. student.arrowDoSth2(); // 'window'

    其实就是相当于箭头函数外的this是缓存的该箭头函数上层的普通函数的this。如果没有普通函数,则是全局对象(浏览器中则是window)。 也就是说无法通过call、apply、bind绑定箭头函数的this(它自身没有this)。而call、apply、bind可以绑定缓存箭头函数上层的普通函数的this。 比如:

    1. var student = {
    2. name: '若川',
    3. doSth: function(){
    4. console.log(this.name);
    5. return () => {
    6. console.log('arrowFn:', this.name);
    7. }
    8. }
    9. }
    10. var person = {
    11. name: 'person',
    12. }
    13. student.doSth().call(person); // '若川' 'arrowFn:' '若川'
    14. student.doSth.call(person)(); // 'person' 'arrowFn:' 'person'