JavaScript对象:按名称作为字符串访问变量属性[重复]

2020/09/29 00:41 · javascript ·  · 0评论

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

var columns = {
  left: true,
  center : false,
  right : false
}

我有一个既传递对象又传递属性的函数,像这样

//should return false
var side = read_prop(columns, 'right');

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

您不需要功能-只需使用方括号表示法即可

var side = columns['right'];

这等于点表示法var side = columns.right;除了right使用括号表示法时也可能来自变量,函数返回值等的事实

如果需要它的功能,则为:

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

为了回答下面与原始问题没有直接关系的一些注释,可以通过多个括号引用嵌套对象。如果您有这样的嵌套对象:

var foo = { a: 1, b: 2, c: {x: 999, y:998, z: 997}};

您可以访问财产xc,如下所示:

var cx = foo['c']['x']

如果未定义属性,则将尝试引用该属性undefined(不是nullfalse):

foo['c']['q'] === null
// returns false

foo['c']['q'] === false
// returns false

foo['c']['q'] === undefined
// returns true

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://javascript.askforanswer.com/javascriptduixianganmingchengzuoweizifuchuanfangwenbianliangshuxingzhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!