我一直在做一些
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在空时没有显示,则可能需要检查以确保您使用的是最新版本.