javascript - 当 IIFE 中缺少 obj 引用时,“this”应该返回“window obj”时的奇怪行为
问题描述
据我所知'this'关键字:
- 默认情况下,它指的是“Window Obj”
- 如果它写在一个函数内部(作为一个对象的道具),那么它指的是父 Obj
在下面的例子中,当调用 foo.bar 函数时(没有调用、应用、绑定的帮助),那么由于 obj (foo) 的引用丢失了,所以默认情况下新的引用必须是 window Obj。
奇怪的是,这个关键字仍然返回一个对象(它总是这样做),但属于第三种——参数对象。
另请注意,在执行 console.log 时调用 arguments[0] (), 'this' 仅返回我们心爱的 'window obj' 的 1 行!
现在,这个新对象到底是从哪里来的,它的重要性是什么?
根据我的理解(因为在 IIFE 中丢失了“foo”的引用,所以应该是“全局窗口 obj”)。请解释一下。
<script>
var foo = {
bar: function() {
return this;
}
};
var a = (function(){
console.log(this);//returns window obj
return arguments[0]();//here also should return window obj, as this here points to 'window obj'
})(foo.bar);
console.log("value of a:", a);
</script>
解决方案
推荐阅读
- reactjs - 构建失败:退出代码 127
- java - 如何通过 SDK Java 在 AWS API Gateway 中启用 CORS
- powershell - 一次将对象数组添加到 PSObject
- python - GroupBy 结果到列表字典(具有多列)
- c++ - 这是 C++ 中带有指针的数组的一个很好的使用/代码吗?
- excel - 从较大的二维数组创建二维数组
- javascript - 使用 Array.prototype.includes 定位对象数组中的属性
- php - 自定义帖子类型获取 URL 循环短代码
- python - 我在 Spyder (Anaconda) 中的 ipython 控制台没有选择正确的 Windows 系统 PATH 环境变量
- javascript - d3.js - 对由数组控制的 .key 的调用次数