[英]Is lexical closure an attribute of the execution context of a function?
我了解到,当我在某些词法环境中定义一个函数时,它决定了该函数可以访问的词法闭包以及外部作用域和原型链中的变量。
我的问题是当我们使用bind
或call
或apply
显式更改函数的执行上下文时会发生什么。 这如何影响由于词法闭包而应该在函数中提供的变量以及应该在原型链中找到的变量。
我的直觉是说,以前的闭包已被替换,并且新的原型链应该可用,并且基于场景在新的原型链中可能会或可能不会找到变量,但是这引出了我是否要创建新的执行上下文的问题,因此是一个新的词法闭包,那么我能以某种方式将其他一些变量插入到这个新创建的词法闭包中吗?
还有一种方法可以在调用函数之前更改this
函数,但保留其先前的词法闭包?
bind
, call
和apply
仅更改函数的this
值( 即,其上下文 ),而不更改其范围( 即,环境 )。
因此,任何父母环境 。 即使使用上述方法,变量仍然可用。 仅this
将被更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.