解决this.setData is not a function、this.setData写在setTimeout里报错、this的作用域
修改前:
```js
setTimeout(function () {
this.setData({
index: "1"
})
}, 3000)
```
修改后:(在setTimeout方法外层先定义var that = this😉
```js
var that = this;
setTimeout(function () {
that.setData({
index: "1"
})
}, 3000)
```
因为一个闭包 , 无法直接通过this来setData
当然, 在es6中 , 使用箭头函数是不存在这个问题的
例如 :
```js
setTimeout( () => {
console.log(this.type + ' says ' + say)
}, 1000)
```
当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。
版权声明:
作者:tianya
链接:https://tya.zone/p/56.html
来源:天涯博客
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
解决this.setData is not a function、this.setData写在setTimeout里报错、this的作用域
修改前:
```js
setTimeout(function () {
this.setData({
index: "1"
})
}, 3000)
```
修改后:(在setTimeout方法外层先定义var that = this😉
……
共有 0 条评论