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

js中的this指向:

在构造函数中指向构造的实例

		//构造函数
		function Fn(){
			console.log(this); //Fn()
		}
		new Fn()

在普通函数中谁调用就指向谁,没有调用的情况指向window

		//普通函数
		function fn(){
			console.log(this); //window
		}
		fn()

箭头函数;

1.箭头函数的出现是为了解决ES5中this指向混乱问题

2.箭头函数没有自己的this指向,它的this来自父级上下文,并且永远指父级上下文

3.箭头函数的this不会在调用时候被改变,因为箭头函数在声明的时候它的this就已经被永久确定了。

箭头函数与普通函数的区别:

1.箭头函数是匿名函数,不能作为构造函数,也不能使用new,否则就会报错

		let Obj=()=>{
			this.name=name;
			this.age=18;
		}
		let obj=new Obj();//报错:Obj is not a constructor

2.箭头函数的this始终指向父级上下文

	//箭头函数
		let obj={
			a:100,
			fn:function(){
				console.log(this);//obj
			},
			fn2:()=>{
				console.log(this); //window
			}
		}
		obj.fn();
		obj.fn2();

3.箭头函数没有原型属性

4.箭头函数内没有arguments,可以用展开运算符..解决(arguments=>参数集合=>伪 数组)

函数.caller()谁调用当前的方法,会返回这个方法本身

arguments.callee==>当前这个方法本身

arguments参数集合 是一个类数组 不能调用数组的方法

		let fn=()=>{
			console.log(arguments);//arguments is not defined
		}
		fn(1,2,3)

		let fn1=(...args)=>{//使用展开运算符接收参数集合
			console.log(args);//[4,5,6]
		}
		fn1(4,5,6)

5.箭头函数不能使用call,apply,bind修改this指向,但是可以正常传递参数

		let obj={
			name:'张三',
			birth:1999,
			age:(arg1,arg2)=>{
				console.log(this);//windpw
				console.log(arg1,arg2);//哈哈 嘿嘿
			}
		}
		let obj2={
			name:'王五',
			birth:2002,
		}
		obj.age.call(obj2,'哈哈','嘿嘿')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值