解决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
分享
二维码
海报
解决this.setData is not a function、this.setData写在setTimeout里报错、this的作用域
修改前: ```js setTimeout(function () {    this.setData({       index: "1"    }) }, 3000) ``` 修改后:(在setTimeout方法外层先定义var that = this😉 ……
<<上一篇
下一篇>>