首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript对象:以字符串形式按名称访问变量属性

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

Stack Overflow用户
提问于 2010-11-23 19:18:10
回答 2查看 526K关注 0票数 447

如果我有一个javascript对象,如下所示

代码语言:javascript
复制
var columns = {
  left: true,
  center : false,
  right : false
}

我有一个函数,它同时传递对象和属性名,如下所示

代码语言:javascript
复制
//should return false
var side = read_prop(columns, 'right');

read_prop(object, property)的主体会是什么样子的?

EN

回答 2

Stack Overflow用户

发布于 2014-10-16 22:43:06

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

代码语言:javascript
复制
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中的代码和注释。

票数 90
EN

Stack Overflow用户

发布于 2014-10-04 22:35:08

由于我的项目得到了上面的答案的帮助(我问了一个重复的问题,并在这里被引用),所以我提交了一个答案(我的测试代码),用于在var中嵌套时使用括号表示法:

代码语言:javascript
复制
<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>

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4255472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档