我一直在做一些 JavaScript 开发,我遇到了这个问题。考虑以下代码
var obj = {};
obj.bind = function () {
console.info(this);
};
obj.bind();
我在 FireBug JavaScript 控制台上运行代码。预期结果是 this
在控制台中显示对该对象的引用。
它实际上显示undefined
。
但是,当我对代码进行此更改时
var obj = {};
obj.bind = function () {
this.x = 'x';
console.info(this);
};
obj.bind();
现在控制台显示this
的预期值,它是对obj
对象的引用。
为什么会这样?
最佳答案
undefined
是函数的返回值,您会得到它是因为您没有显式返回值。
在 Chrome 和 Firebug 中,它在返回值 undefined
之前正确地在控制台中显示对象。
所以如果你这样做:
var obj = {};
obj.bind = function () {
console.info(this);
return "foo";
};
obj.bind();
...您应该会看到如下内容:
Object { }
"foo"
如果 Firebug 在对象为空时未显示该对象,您可能需要检查以确保您使用的是最新版本。
关于javascript - JavaScript this 关键字是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673114/