我理解当我在某个词法环境中定义一个函数时,它决定了函数可以访问的词法闭包,以及外部作用域和原型链中的变量。
我的问题是当我们使用bind
或call
或apply
显式更改函数的执行上下文时会发生什么。这是如何影响由于词法闭包而应该在函数中可用的变量以及应该在原型链中找到的变量。
我的直觉说先前的闭包被替换了,一个新的原型链应该可用,并且可能会或者可能不会在基于场景的新原型链中找到变量,但是如果我创建一个新的执行上下文则会引发问题,因此有一个新的词法闭包然后我可以以某种方式插入一些其他变量到这个新创建的词法闭包?
还有一种方法可以在调用函数之前更改它的this
,但保留其先前的词法闭包吗?
答案 0 :(得分:1)
bind
,call
和apply
仅更改函数的this
值(即其上下文),而不是其范围(< em>即环境)。
所以父 env。即使使用上述方法,变量仍然可用。只会更改this
。