axios箭头函数和this问题处理
箭头函数
- ES6标准新增了一种新的函数: Arrow Function(箭头函数);
# 箭头函数
x=> x*x
# 正常常熟,和上面等同
function(x){return x*x
}this
- 箭头函数看上去是匿名函数的一种简写, 但实际上, 箭头函数和匿名函数有个明显的区别:
箭头函数内部的this是词法作用域
,由上下文确定; - eg
// 正常函数,里面的this是一个vue实例test:function(){console.log(this);},//箭头函数写法,里面的this是一个window,改不了test1:()=>{console.log(this);}
- 不应该使用箭头函数来定义method函数,理由是箭头函数绑定了父级作用域的上下文, 所有this将不会按照期望指向vue实例;
eg
<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title><script src="js/vue.js" type="text/javascript" charset="utf-8"></script><link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css"><script src="https://unpkg.com/axios/dist/axios.min.js"></script><style type="text/css"></style></head><body><div id="app"><button type="button" @click="getData">获取数据</button><p>{{user}}</p><button type="button" @click="test">获取数据</button><button type="button" @click="test1">获取数据</button></div></body>
</html>
<script type="text/javascript"> var url = 'http://139.196.186.154:8080/';var vm = new Vue({el:'#app',data:{user:'123', },methods:{getData:function(){// axios里面的函数导致了this的实例不对了, 里面要用this修改对象的值会出错,需要单独定义个变量代替this的vue实例,然后用那个变量替代vue的实例来修改值 // var that = this;// axios.get(url).then(function(res){// 直接用 this,这个是window对象,不能直接改变vue对象的值// that.user = res.data.data[0]; // console.log(that)// })//法二 用箭头函数, this就是指向的vue实例,建议用箭头函数, 否则需要用上面那种那种方法处理axios.get(url).then(res=>{ this.user = res.data.data[0]; console.log(this)})},// 正常函数,里面的this是一个vue实例test:function(){console.log(this);},//箭头函数写法,里面的this是一个window,改不了test1:()=>{console.log(this);}}});
</script>
axios箭头函数和this问题处理相关推荐
- Vue相关面试问答TOP2(能不能在method中使⽤箭头函数、如何定义组件的data、v-if 和 v-show的区别、computed、watch、methods的区别、axios的特点....)
1.能不能在method中使⽤箭头函数? 理论上可以使⽤,但是我不会使⽤,因为箭头函数中的this的指向与⼀般函数不同 ⼀般函数执⾏调⽤ 它的对象 ...
- Java箭头函数,lambda函数
Java箭头函数,lambda函数 lambda表达式实质就是一种语法糖,(建议尽量不要使用lambda表达式,代码太简洁,难懂,难以调试) lambda表达式的简单例子: 不需要参数,返回5 ()- ...
- es6箭头函数(=)与展开特性运算符(...)的使用
2019独角兽企业重金招聘Python工程师标准>>> 箭头函数的几个写法 //当含有固定个参数的时候,es5写法 function test(a,b){ ..}//es6写法(es ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
- es6箭头函数中this
普通函数: $scope.$on('$stateChangeSuccess',function(){this.list = this.getList();}); 箭头函数: $scope.$on('$ ...
- JavaScript 初学者必看“箭头函数”
译者按: 箭头函数看上去只是语法的变动,其实也影响了this的作用域. 原文: JavaScript: Arrow Functions for Beginners 译者: Fundebug 本文采用意 ...
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- ES6 箭头函数易出错细节
箭头函数表达式的语法比函数表达式更短,并且没有自己的this,arguments,super或 new.target. 箭头函数基本语法 (参数1, 参数2, -, 参数N) => { 函数声明 ...
- es6箭头函数this问题
最近做vue的项目,发现中用了很多es6中的新特性,随后开始恶补es6,发现箭头函数这一简洁的函数写法,不过还是感觉不习惯,箭头函数的格式: //有参数var foo = n => consol ...
最新文章
- python安装方法32位_【Python】pycharm安装32位win7出现的问题解决办法。
- 【小松教你手游开发】【unity实用技能】unity游戏移植到WindowsPhone8平台上的一些...
- type python3_详解Python3中的Sequence type的使用
- 一次CMS GC问题排查过程(理解原理+读懂GC日志)
- To B 的产品经理和 To C 的产品经理有什么差别? To B 的产品经理的价值如何体现?
- 请写一个java程序实现线程连接池功能_写一个java程序实现线程连接池的功能
- java将图片转byte存入数据库_Java将byte[]转图片存储到本地的案例
- javascript中打印对象显示[object object]_扒一扒JavaScript中不常见的一些object
- 网络管理与维护作业4
- 研磨设计模式之《观察者模式observer》
- 基于java的员工绩效考核管理系统
- Discuz漏洞复现
- 远远地望你在山的那边
- base64编码计算机网络,什么是Base64(Base64)?
- 硕士论文查重率是多少?
- python实验大纲_Python程序设计实验-教学大纲-段震
- Java基础笔记-十五、集合类库(下)
- get/post请求使用工具(apifox/postman/浏览器)能请求通但是java代码不行的问题解决
- Gif动图制作神器(GifCam)
- Nginx 403 Forbidden
热门文章
- 商品归类查询服务_案例评析:机电商品中的小零件 | 归类不简单(上)
- 设计模式连载:第二篇职业和武器模式,成就你的梦想
- 【python实战】多线程下载文件
- VS2013密钥-所有版本
- 在 Python Turtle 中绘制颜色填充的形状
- AMD在量子隐形传输方面取得突破; 量子隐形传态:从物理量子比特到逻辑编码空间 | 全球量子科技与工业快讯第三十五期
- “微笑涛声”微信公众号正式上线运行
- Shell之$(cd $(dirname $0); pwd)命令详解
- Siege工具的使用
- iphone和mac互传文件_在 iPod touch 和电脑之间传输文件