javascript - 在 JavaScript 中,在声明新键 :value pairs of the object? 时引用对象的变量名与使用 `this` 之间有区别吗

标签 javascript

在 JavaScript 中,在声明对象的新键值对时,引用对象的变量名与使用 this 有区别吗?

    var foo = {
      bar: function() {
        foo.qux = 'value';
      }
    };

    alert(foo.qux); // undefined
    foo.bar();
    alert(foo.qux); // 'value'

    var foo = {
      bar: function() {
        this.qux = 'value';
      }
    };

    alert(foo.qux); // undefined
    foo.bar();
    alert(foo.qux); // value

还有:http://jsbin.com/emayub/9/edit

最佳答案

仅考虑提供的代码,两者都会做同样的事情。但是有一些事情要记住:

foo 不是对象的名称,它是变量 的名称。

变量是可以改变的。考虑一下:

var bar = foo;
foo = null;

使用 foo 会破坏代码代码,但是当使用 this 时,bar.bar() 仍会按预期工作。

通过使用 foo,您使函数依赖于变量的名称,因此只要变量发生变化,函数就会中断。这也是代码重构的一个重要方面。

关于javascript - 在 JavaScript 中,在声明新键 :value pairs of the object? 时引用对象的变量名与使用 `this` 之间有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10709658/

相关文章:

javascript - 如何在不使用 JQuery 设置行高的情况下键入时检测 textarea 中的新行?

javascript - 如何从 gnome-shell-extension 内部启动 GtkApplication?

Javascript:如何检查字符串中是否存在两个数字? (正则表达式)

javascript - 显示与从 D3 图例中的范围映射的每个颜色渐变相关的值

JavaScript:第一次鼠标悬停后 z-index 不会改变

javascript - 使用 javascript 将完整的 javascript 对象保存到文件中

javascript - HTML Doctype 设置/IE Quirks 模式

javascript - 通过 CSS3 和 Jquery 处理视差

javascript - 带有雷达循环覆盖的 Google map API v3 绘图,并自动更新雷达

javascript - 如何将 prop 的属性映射到 Vue 的属性中