javascript - 理解“this”绑定
问题描述
我正在阅读“Eloquent Javascript”一书,并且正在阅读“对象的秘密生活”一章。作者说:
“由于每个函数都有自己的绑定,其值取决于调用它的方式,因此您不能在使用关键字
this
定义的常规函数中引用包装范围。function
我不明白他所说的“包装范围”是什么意思,你能解释一下并提供一个简单的例子吗?
解决方案
函数的包装范围将是定义函数的范围。例如
function outer() {
var outerThis = this;
return function inner() {
console.log(outerThis, this);
}
}
在这里,inner
函数具有包装范围 = 范围outer
。而且,内部函数无法访问外部函数,这就是为什么如果我们想使用它,this
我们需要将它存储在一个变量中。outerThis
var innerFunction = outer.call({});
innerFunction();
如果您在 chrome 控制台上执行上述操作,这将打印:
{}, // Caller of outer() (it was bound)
Window // Caller of inner()
推荐阅读
- laravel - 此密码重置令牌无效 laravel 7
- c# - Xamarin.Forms 动态链接库调试问题
- node.js - 如何为电子邮件定义一个模式,以便它接受数字以及特殊字符和字符串,也使用猫鼬
- vert.x - 昂贵的 Vertx Eventbus Json 处理
- javascript - 使用异步调用设置的 JS 变量的范围
- r - 我希望我的函数返回 TRUE 或 FALSE,具体取决于种群是否灭绝到最大时间
- python - 从使用 filter_by 的 Pandas DataFrame 返回 2 个特定列
- python - 在 Numpy 中,如何使用大小为 B 的索引数组来索引 B x N x M 数组以产生 B x M 数组?
- c - 如何在Windows上计算C中文件夹中的元素数
- python - 从 powershell 打开 jupyter notebook 时如何解决此错误?