在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
,您正在使函数依赖于变量的名称,因此每当变量更改时,函数就会中断。这也是代码重构的一个重要方面。