【问题标题】:Using the value of a variable to access a property of an object [duplicate]使用变量的值来访问对象的属性[重复]
【发布时间】:2015-03-13 10:53:52
【问题描述】:
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");,因为引号是无意义的。那么如何修改这段代码才能正常工作呢?

【问题讨论】:

标签: javascript


【解决方案1】:

你可以使用:

console.log(fruit[w]);

【讨论】:

    【解决方案2】:

    这就是为什么这不起作用。一切都与范围有关。当你调用fruit.w时,它会查找属于fruit对象的属性w,而不是对象fruit中的全局变量w的值。

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

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

    var fruit = {apple:"1", banana:"2"};
    var w = "apple";
    
    console.log(fruit[w]); // Produces '1'
    

    这使用变量的值作为该符号的属性。

    这个 sn-p 应该说明这一点。

    $(document).ready(function() {
      var fruit = {
        apple: "1",
        banana: "2"
      };
      var w = "apple";
      $(".apple").text(fruit[w]);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="apple"></div>

    进一步阅读:

    MDN Bracket Notation(感谢@Grundy)

    【讨论】:

      猜你喜欢
      • 2012-11-28
      • 2012-06-30
      • 2014-08-04
      • 2017-06-09
      • 2011-06-10
      • 1970-01-01
      • 2012-07-02
      • 2019-02-04
      • 2021-10-25
      相关资源
      最近更新 更多