- 语法不一样(这个就不过多说了,可以看看阮一峰的ES6)
- 箭头函数没有自己的
this
,它内部的this
是继承而来的,所以call()
、apply()
、bind
()都无法改变this
指向
let obj = {
sex: "boy",
fn : ()=>{
console.log(this.sex);
}
}
obj.fn(); // 结果是什么???
结果是ubdefined
,此时你要懂箭头函数的this,那么你就不会疑惑,反之,你就会觉得输出的是boy
,记住一句话箭头函数的this在定义时就确定了,所以fn
里面的this
就是外层执行环境的this
,也就是window
。
- 箭头函数没有
arguments
在箭头函数内部访问arguments其实就是访问外层函数的arguments
var a = {
sex : "boy",
func1: function() {
(() => {
console.log(arguments);
})()
}
};
a.func1('hah')//输出的是什么???
-
箭头函数不能当作构造函数来使用
还是因为它没有this
~?
你就得知道构造函数的new操作符做了什么?
1.生成一个空对象{};2.将函数的this指向该对象3.执行构造函数的语句4.返回该对象实例 -
箭头函数不能用作
Generator
函数,不能使用yeild关键字 -
箭头函数没有原型
prototype
还是因为没有this呀?
(()=>{
console.log(this.prototype);
})() //输出undefined