深入理解Es6箭头函数

     最近在写Vue项目时用箭头函数时遇到了一点问题;this的实例总是不在当前的Vue对象上,发现特别是ajax异步请求数据,或者钩子函数中使用的时候,就会报错。最本溯源:箭头函数的this的锅,如果我们使用function(){},或者Es6 方法的写法就不会出现这类问题。 

今天就主要探讨一下Es6箭头函数

定义:JavaScript ECMAScript6箭头函数表达式的语法比函数表达式短,并且不绑定自己的this,arguments,super或new.target。此外,箭头函数最好在非方法函数中使用,且不能用作构造函数。

增加一些概念性的理解:

 

Javascript中代码的运行环境分为以下三种:

1.全局级别的代码-——默认的代码环境,一旦代码被引入,引擎最先进入的是这个环境。

2.函数级别的代码——当执行一个函数时,运行函数体中的代码。

3.eval的代码——在eval函数内运行的代码。

上下文的概念:为了表示不同的运行环境。执行上下文可以理解为当前代码的运行环境,它会形成一个作用域。在JS中会产生多个执行上下文,JS引擎会以堆栈的方式来处理,栈底永远是全局上下文,栈顶是正在运行的上下文。执行上下文决定了JS执行过程中可以获取哪些变量,函数,数据。每次某个函数被调用,就会有一个新的执行上下文为其创建。(this指向的对象,叫做函数的上下文Context,也叫函数的调用者) 

插入自己的代码:

	<script>
	   function person(){
			this.name = 'javascript----'
			this.getname = (name)=>{
			console.log(this.name +name);
		  }
	    }
		var person = new person();
//		let f = a => a*a;
//		console.log(f(5))
        person.getname('es5')//正常的Es5的获取方式
        var getname = person.getname;   //参照如果写function(){}就取不到方法实例的this.name
        getname('es6')
	</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值