这个关键字的JavaScript如何运作?

我一直在做一些
JavaScript开发,我遇到了这个问题.请考虑以下代码

var obj = {};
obj.bind = function () {
console.info(this);
};

obj.bind();

我在FireBug JavaScript控制台上运行代码.预期的结果是,它显示对控制台中对象的引用.

它实际上显示未定义.

但是,当我对我的代码进行此更改时

var obj = {};
obj.bind = function () {
this.x = 'x';
console.info(this);
};

obj.bind();

现在控制台显示this的期望值,这是对obj对象的引用.

为什么会这样?

最佳答案 undefined是函数的返回值,因为您没有显式返回值,所以您将获得该函数.

在Chrome和Firebug中,它在返回值未定义之前正确显示控制台中的Object.

所以,如果你这样做:

var obj = {};
    obj.bind = function () {
    console.info(this);
    return "foo";
};

obj.bind();

……你应该看到类似的东西:

Object {   }
"foo"

如果Firebug在空时没有显示,则可能需要检查以确保您使用的是最新版本.

点赞