微信小程序中为什么使用var that=this
深入理解微信小程序中的 `var that = this`
前言:
在微信小程序或JS开发中,我们经常看到 `var that = this` 这样的代码。起初,我也曾疑惑其必要性。但从面向对象的角度深入思考后,我逐渐明白了其背后的逻辑。在此,我想分享一下我的理解,并欢迎大家批评指正。
代码示例:
考虑以下小程序中的代码片段:
```javascript
Page({
data: {
test: 10
},
testfun1: function() {
console.log(this.data.test) // 输出 10,因为this指向包含testfun1函数的Page对象。
function testfun2() {
console.log(this.data.test) // 这里会报错,因为在这个函数内,this的指向已经改变,不再指向Page对象。
}
testfun2();
}
})
```
在 `testfun1` 函数内部定义的 `testfun2` 函数中,`this` 的指向已经改变,不再是包含 `testfun1` 的 Page 对象。尝试访问 `this.data.test` 会导致错误。
解决方案:为了解决这个问题,我们需要复制 `this` 的引用到一个变量(如 `that`)中。这样,即使在函数执行过程中 `this` 的指向发生改变,`that` 仍然指向原始的对象。通过这样做,我们可以确保在函数内部访问到全局数据。下面是修改后的代码:
```javascript
testfun1: function() {
var that = this; // 复制this的引用到that变量中。
console.log(this.data.test); // 输出 10
function testfun2() {
console.log(that.data.test); // 输出 10,使用that代替this来访问Page对象的属性。
}
testfun2();
}
```
通过上面的例子,我们可以更深入地理解为什么需要在小程序中使用 `var that = this`。这是因为 `this` 是一个指向当前对象的指针,其指向的对象在程序执行过程中可能会发生变化。为了确保在函数内部能够访问到全局数据,我们需要适当地复制 `this` 的引用到另一个变量中。这样,即使在函数执行过程中 `this` 的指向发生改变,我们仍然可以通过这个复制的引用来访问全局数据。希望这篇文章能帮助大家更好地理解微信小程序中 `var that = this` 的用途和意义。感谢大家一直以来的支持和关注!如果您有任何疑问或需要进一步的解释,请随时与我联系。如需转载此文,请务必注明出处并感谢原作者的努力。最后感谢大家对于狼蚁SEO网站的支持!如果您觉得本文对您有帮助,请不吝点赞和分享给更多的朋友!
编程语言
- 微信小程序中为什么使用var that=this
- JavaScript访问字符串中单个字符的两种方法
- 在Google 地图上实现做的标记相连接
- js下载文件并修改文件名
- javascript实现抽奖程序的简单实例
- php脚本守护进程原理与实现方法详解
- ReactNative实现图片上传功能的示例代码
- 正则表达式中环视的简单应用示例【基于java】
- JS实现回到页面顶部动画效果的简单实例
- js实现用户注册协议倒计时的方法
- PHP会话控制实例分析
- PHP使用curl制作简易百度搜索
- jQuery NProgress.js加载进度插件的简单使用方法
- JS清除字符串中重复值的实现方法
- ES6概念 Symbol.keyFor()方法
- PHP排序算法之简单选择排序(Simple Selection Sort)实例