箭头函数和普通函数的区别

  • 语法不一样(这个就不过多说了,可以看看阮一峰的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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值