为什么在此javascript示例中引用窗口对象?

申德

我想了解我在哪里犯错!我有这样的小javascript对象:

o = {
    fun: function (x) {
        return x();
    },

    fun2: function () {
        return this;
    }
};

现在,我在chrome调试器中触发以下方法

o.fun(o.fun2);

这将返回一个窗口对象我期望看到o对象我不知道这一点。有人可以向我解释吗?我真的很想知道Javascript在幕后发生了什么。

尖尖的

的值this取决于调用函数的方式,而没有其他决定您的函数由初始化表达式定义为该对象文字的一部分这一事实绝对没有区别。

您可以this像这样确保“ fun”传播的值

fun: function (x) {
    return x.call(this);
},

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在此代码示例中,即使引用未引用对象,引用为什么在内存中也有大小?

为什么在此示例中需要Handler对象?

为什么在此示例中可以返回临时对象?

在Swift中,为什么.zero在此示例中填充整个窗口?

为什么在此示例中StateT更快?

为什么在此示例中需要括号?

为什么在此示例中再次引用事件处理程序?

为什么在此示例中$ data引用不起作用?

在此示例中,为什么枚举不需要创建对象?

什么是AllowAmbiguousTypes,为什么在此“ forall”示例中需要它?

为什么在此JavaScript示例中调用相同方法会有不同的输出?

在此代码段中,为什么“ this”最终绑定到窗口对象而不是数组b?

为什么在此变量分配中引用了两个对象?

为什么在此示例中Map会有return语句?

为什么SFINAE在此示例中无法按预期工作?

为什么在此示例中命令注入不起作用?

为什么tsort在此示例中不报告任何循环?

为什么在此示例中ArrayAdapter始终为null?

为什么git revert在此示例中失败?

为什么在此示例代码中不需要 readSync?

为什么在此示例中需要对变量调用detach?

Kotlin:为什么在此示例中Sequence更高效?

为什么在此示例中getElementsByTagName不起作用

为什么在此示例中Gradle编译失败?

为什么在此简单示例中Frame.tryValues失败?

为什么在此MobX示例中需要“获取”

为什么在此示例中参数b具有类型a?

为什么useRef在此示例中不起作用?

为什么在此队列示例中需要取消任务?