在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
Run Code Online (Sandbox Code Playgroud)
只考虑所提出的代码,两者都会做同样的事情.但是有一些事情要记住:
foo不是对象的名称,它是变量的名称.
变量可以改变.考虑一下:
var bar = foo;
foo = null;
Run Code Online (Sandbox Code Playgroud)
使用foo会破坏代码,但在使用时this,bar.bar()仍然会按预期工作.
通过使用foo,您将使函数依赖于变量的名称,因此每当变量更改时,函数都会中断.这也是代码重构的一个重要方面.