JavaScript中函数的this绑定有哪四种方式,大家能猜到吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2525个文字,预计阅读时间需要11分钟。
JavaScript中的this和函数息息相关,今天,我就给大家详细地讲一讲:函数中的this到底指什么。
函数中的this,是一个非常核心的概念,很多初学者都会被它绕晕。其实,只要抓住核心,理解起来并不难。
首先,我们要明白,this的本质是一个指针,它指向的是函数的调用者。
举个例子,假设我们有一个函数:
javascriptfunction test() { console.log(this);}
如果我们直接调用这个函数:
javascripttest();
那么,this就会指向全局对象(在浏览器中是window对象,在Node.js中是global对象)。
但是,如果我们在某个对象上调用这个函数:
javascriptvar obj={ test: test};obj.test();
那么,this就会指向这个对象。
这就是this的基本原理。
当然,this还有一些特殊情况,比如箭头函数中的this。
箭头函数中的this,不会绑定到函数的调用者,而是继承自外围函数的上下文。
举个例子:
javascriptfunction outer() { var that=this; setTimeout(function() { console.log(this); // 指向window对象 console.log(that); // 指向outer函数的调用者 }, 1000);}outer();
在这个例子中,setTimeout中的函数是一个箭头函数,它的this指向了outer函数的调用者。
本文共计2525个文字,预计阅读时间需要11分钟。
JavaScript中的this和函数息息相关,今天,我就给大家详细地讲一讲:函数中的this到底指什么。
函数中的this,是一个非常核心的概念,很多初学者都会被它绕晕。其实,只要抓住核心,理解起来并不难。
首先,我们要明白,this的本质是一个指针,它指向的是函数的调用者。
举个例子,假设我们有一个函数:
javascriptfunction test() { console.log(this);}
如果我们直接调用这个函数:
javascripttest();
那么,this就会指向全局对象(在浏览器中是window对象,在Node.js中是global对象)。
但是,如果我们在某个对象上调用这个函数:
javascriptvar obj={ test: test};obj.test();
那么,this就会指向这个对象。
这就是this的基本原理。
当然,this还有一些特殊情况,比如箭头函数中的this。
箭头函数中的this,不会绑定到函数的调用者,而是继承自外围函数的上下文。
举个例子:
javascriptfunction outer() { var that=this; setTimeout(function() { console.log(this); // 指向window对象 console.log(that); // 指向outer函数的调用者 }, 1000);}outer();
在这个例子中,setTimeout中的函数是一个箭头函数,它的this指向了outer函数的调用者。

