****\
1、没有this
箭头函数没有 this,所以需要通过查找作用域链来确定 this 的值。这就意味着如果箭头函数被非箭头函数包含,this 绑定的就是最近一层非箭头函数的 this。,因为箭头函数没有 this,所以也不能用 call()、apply()、bind() 这些方法改变 this 的指向,可以看一个例子:
var value = 1;
var result = (() => this.value).bind({value: 2})();
console.log(result); // 1
2、没有arguments
箭头函数没有自己的 arguments 对象,这不一定是件坏事,因为箭头函数可以访问外围函数的。通过命名参数或者 rest 参数的形式访问参数
3、没有new关键字调用
箭头不能被用作构造函数,如果通过 new 的方式调用,会报错
var Foo = () => {};
var foo = new Foo(); // TypeError: Foo is not a constructor
4、没有new.target
因为不能使用 new 调用,所以也没有 new.target 值。关于 new.target,可以参考 es6.ruanyifeng.com/#docs/class…
5、没有原型
由于不能使用 new 调用箭头函数,所以也没有构建原型的需求,于是箭头函数也不存在 prototype 这个属性。
var Foo = () => {};
console.log(Foo.prototype); // undefined
6、没有super
连原型都没有,自然也不能通过 super 来访问原型的属性,所以箭头函数也是没有 super 的,不过跟 this、arguments、new.target 一样,这些值由外围最近一层非箭头函数决定。