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");
,因为引号符号是无意义的。那么如何修改此代码才能工作?
答案 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)