js闭包中的this(匿名函数中的this指向的是windows)

Posted psxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js闭包中的this(匿名函数中的this指向的是windows)相关的知识,希望对你有一定的参考价值。

 

 

 1.普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样

 2.让匿名函数中的this指向对象的两种方法

       可以使用对象冒充强制改变this:call()、apply()

       将this赋值给一个变量,闭包可以访问这个变量

 一、this问题

匿名函数的执行环境具有全局性,因此其this对象通常指向window(当然,在通过call()或者apply()改变函数执行环境的情况下,this就会指向其他对象)

技术图片

 

为什么匿名函数没有取得其包含作用域(或外部作用域)的this对象呢?

每个函数在被调用时都会自动取得两个特殊变量:this和arguments。内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中的这两个变量。

二、解决方法

(1)把外部作用域中的this对象保存在一个闭包能够访问到的变量里,就可以让闭包访问该对象了。

 

技术图片

2 可以使用对象冒充强制改变this:call()、apply()

 

技术图片

 

以上是关于js闭包中的this(匿名函数中的this指向的是windows)的主要内容,如果未能解决你的问题,请参考以下文章

闭包和匿名函数

闭包,this指向,内存泄漏

JS面试题(进阶)——原型链、this指向、闭包

Vue中匿名函数和箭头函数的this

JavaScript:闭包中的this

js--call箭头函数/匿名函数