vue|vue 正确使用 setTimeout
【vue|vue 正确使用 setTimeout】箭头函数是没有自己的this,在它内部使用的this是由它定义的宿主对象决定
let self = this;
setTimeout(() => {
self.loading();
}, 1000);
如果我们直接使用this获取该函数
setTimeout(this.loading(), 1000);
这种写法在vue里面可能会调用失败,为啥呢?
对于普通函数(包括匿名函数),this指的是直接的调用者,在非严格模式下,如果没有直接调用者,this指的是window
vue this指向问题
箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象, 定义它的时候,可能环境是window; 箭头函数可以方便地让我们在 setTimeout ,setInterval中方便的使用this。
使用call,apply,bind绑定的,this指的是绑定的对象
var self = this;
setTimeout(function() {
document.getElementById("id1").innerText = self.message;
//改为self
}.bind(this), 10)
推荐阅读
- 由浅入深理解AOP
- vue-cli|vue-cli 3.x vue.config.js 配置
- 【译】20个更有效地使用谷歌搜索的技巧
- 2020-04-07vue中Axios的封装和API接口的管理
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件