微信小程序中为什么用var that=this来绑定this上下文?
- 内容介绍
- 文章标签
- 相关推荐
本文共计904个文字,预计阅读时间需要4分钟。
前言:在小型程序或JavaScript开发中,经常需要使用`var that=this;`。一开始我以为这是无用的(原因为未知),后来从面向对象的角度想明白了,下面简单解释一下我的理解,欢迎指正。
简单解释:在JavaScript中,`this`关键字指向当前执行环境的上下文。使用`var that=this;`是为了在函数外部保持对当前上下文(即`this`)的引用,防止在函数执行过程中`this`的值发生变化。
我的理解:在JavaScript中,当我们在对象内部调用函数时,如果不显式绑定`this`,那么`this`会指向函数所属的对象。但在某些情况下,我们希望在函数外部使用`this`,此时就需要用到`var that=this;`。
例如,在以下代码中:
javascriptfunction MyObject() { this.name='张三'; this.sayName=function() { console.log(this.name); }}
var myObj=new MyObject();myObj.sayName(); // 输出:张三
如果我们在`MyObject`的构造函数外部调用`sayName`方法,`this`将不再指向`MyObject`实例,而是指向全局对象(在浏览器环境中为`window`)。
本文共计904个文字,预计阅读时间需要4分钟。
前言:在小型程序或JavaScript开发中,经常需要使用`var that=this;`。一开始我以为这是无用的(原因为未知),后来从面向对象的角度想明白了,下面简单解释一下我的理解,欢迎指正。
简单解释:在JavaScript中,`this`关键字指向当前执行环境的上下文。使用`var that=this;`是为了在函数外部保持对当前上下文(即`this`)的引用,防止在函数执行过程中`this`的值发生变化。
我的理解:在JavaScript中,当我们在对象内部调用函数时,如果不显式绑定`this`,那么`this`会指向函数所属的对象。但在某些情况下,我们希望在函数外部使用`this`,此时就需要用到`var that=this;`。
例如,在以下代码中:
javascriptfunction MyObject() { this.name='张三'; this.sayName=function() { console.log(this.name); }}
var myObj=new MyObject();myObj.sayName(); // 输出:张三
如果我们在`MyObject`的构造函数外部调用`sayName`方法,`this`将不再指向`MyObject`实例,而是指向全局对象(在浏览器环境中为`window`)。

