vue箭头函数与普通函数

Posted Onemorelight95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue箭头函数与普通函数相关的知识,希望对你有一定的参考价值。

vue普通函数与箭头函数


文章目录


其实两者最大的不同就是它们的this指向。

普通函数

普通函数中的this代表它的直接调用者, 例如 obj.cal() ,那么cal()方法中的this就是obj,而如果没找到直接调用者,则this指的是 window。

箭头函数

箭头函数不绑定this,它会捕获所在的上下文的this值,作为自己的this值。

两者对比示例

普通函数:

var name = '张三'var person = 
        name:'小马哥',           
        age:18,
        fav:function()
            console.log(this)
            console.log(this.name)
        
    
person.fav();
// name: "小马哥"

此时this指向的是使用它的对象,也就是person对象。

箭头函数:

var person2 = 
    name:'小马哥',
    age:18,
    fav: ()=>
         // 当前this指向了定义时所在的对象(window)
         console.log(this);
      
    
person2.fav();
// Window

使用箭头函数,它表示定义时所在的对象window。

什么时候使用箭头函数

当把一个函数的结果(返回值)作为另一个函数的参数的时候,就可以使用箭头函数了。比如使用axios回显数据的时候:

axios.get('static/data.json').then(function(res)
	console.log(this)    //undefined
	this.user = res.data.user
)

以上的代码会报错,因为在外部,this指向的是当前创建的vue实例,而在这些函数内部,使用例如axios与后台交互后回调函数的内部的this并非指向当前的vue实例。如果想拿到后台回传的数据更新data里的数据,不能在回调函数中直接使用this。这个时候我们有两种方式:定义一个变量来储存this或者使用箭头函数。

第一种方法:

var _this = this
axios.get('static/data.json').then(function(res)
	console.log(this)    //undefined
	console.log(_this)   //VueComponent _uid: 1, _isVue: true, $options: …, _renderProxy: Proxy, _self: VueComponent, …
	_this.user = res.data.user
)

第二种方法:

axios.get('static/data.json').then((res) => 
	console.log(this)      //VueComponent _uid: 1, _isVue: true, $options: …, _renderProxy: Proxy, _self: VueComponent, …
	this.user = res.data.user
)

以上是关于vue箭头函数与普通函数的主要内容,如果未能解决你的问题,请参考以下文章

vue模板内用箭头函数轻松的增加了第二参数吗?

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

ES6新增-箭头函数与普通函数的区别

#yyds干货盘点#那些地方不能使用箭头函数

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

this的用法-箭头函数+面试题