JavaScript对象:按字符串名称访问变量属性

这个问题在这里已经有了答案:

  • 使用变量10动态访问对象属性的答案

  • 你不需要一个函数 - 只需使用括号表示法:

    var side = columns['right'];
    

    这等于点符号, var side = columns.right; ,除了right括号也可以来自变量,函数返回值等等这一事实。

    如果你需要它的一个功能,这里是:

    function read_prop(obj, prop) {
        return obj[prop];
    }
    

    ThiefMaster的答案是100%正确的,虽然我遇到了类似的问题,我需要从嵌套对象(对象内的对象)获取属性,所以作为他的答案的替代方案,您可以创建一个递归解决方案,使您可以定义一个术语来获取任何属性,而不管深度如何:

    function fetchFromObject(obj, prop) {
    
        if(typeof obj === 'undefined') {
            return false;
        }
    
        var _index = prop.indexOf('.')
        if(_index > -1) {
            return fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));
        }
    
        return obj[prop];
    }
    

    您的字符串引用给定属性的位置将重新排列property1.property2

    代码和评论在JsFiddle。


    由于我通过上面的答案帮助了我的项目(我提出了一个重复的问题,并在此处提及),因此在嵌套在var中时,我提交了括号表示法的答案(我的测试代码):

    <html>
    <head>
      <script type="text/javascript">
        function displayFile(whatOption, whatColor) {
          var Test01 = {
            rectangle: {
              red: "RectangleRedFile",
              blue: "RectangleBlueFile"
            },
            square: {
              red: "SquareRedFile",
              blue: "SquareBlueFile"
            }
          };
          var filename = Test01[whatOption][whatColor];
          alert(filename);
        }
      </script>
    </head>
    <body>
      <p onclick="displayFile('rectangle', 'red')">[ Rec Red ]</p>
      <br/>
      <p onclick="displayFile('square', 'blue')">[ Sq Blue ]</p>
      <br/>
      <p onclick="displayFile('square', 'red')">[ Sq Red ]</p>
    </body>
    </html>
    链接地址: http://www.djcxy.com/p/23645.html

    上一篇: JavaScript object: access variable property by name as string

    下一篇: How to convert an array to object in PHP?