使用变量的值来访问对象的属性

时间:2015-01-15 04:23:56

标签: javascript

var fruit = {apple:"1", banana:"2"};
var w = "apple";

console.log(fruit.w); //this is problematic

我试图在我的代码中使用这个逻辑来显示值" 1"在控制台中。这不起作用。直觉上,这是有道理的,因为console.log(fruit.w);等同于console.log(fruit."apple");,因为引号符号是无意义的。那么如何修改此代码才能工作?

2 个答案:

答案 0 :(得分:3)

您可以使用:

console.log(fruit[w]);

答案 1 :(得分:1)

这就是为什么它不起作用。这完全是关于范围的。当您致电fruit.w时,它正在寻找属于w对象的属性fruit,而不是对象中的全局变量w的值{ {1}}。

相反,您可以使用fruit,它使用全局[w]的值作为对象w的属性名称。

注意:全局用于此所在的代码块的上下文中。

fruit

这通过这种表示法使用变量的值作为属性。

这个片段应该说明这一点。



var fruit = {apple:"1", banana:"2"};
var w = "apple";

console.log(fruit[w]); // Produces '1'

$(document).ready(function() {
  var fruit = {
    apple: "1",
    banana: "2"
  };
  var w = "apple";
  $(".apple").text(fruit[w]);
});




进一步阅读:

MDN Bracket Notation(谢谢@Grundy)