为什么这个在这个javascript示例中引用了window对象?

时间:2014-06-21 20:17:13

标签: javascript this

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

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

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

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

o.fun(o.fun2);

这将返回 窗口对象 。我希望看到 o对象 。我无法解决这个问题。有人可以向我解释一下吗?我真的很想通过javascript了解幕后发生的事情。

1 个答案:

答案 0 :(得分:1)

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

您可以确保this的值从“fun”传播,如下所示:

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