javascript - JavaScript this 关键字是如何工作的?

标签 javascript object this

我一直在做一些 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/

相关文章:

c++ - 会删除这个调用析构函数吗?

javascript - Vue.js - 显示 JSON 结果无法正常工作

javascript - 基于验证将元素推送到对象

c++ - 一个对象的 vector push_back 会产生一个巨大的 vector

c# - 在 c# 中成为 unity 3d 对象的子对象

javascript - Jquery 在拖动时将 $(this) 设置为另一个元素

javascript - 在 javascript 中使用 (this) 关键字添加新属性

javascript - Jquery:过滤按键输入

javascript - 如何更改图像宽度以填充所有容器,或将其居中对齐?

javascript - 简单地从另一个组件返回一个值