为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

如果我有一个如下所示的javascript对象var columns = {   left: true,   center : false,   right : false}我有一个传递对象的函数,以及一个像这样的属性名称//should return falsevar side = read_prop(columns, 'right');身体read_prop(object, property)会是什么样的?JavaScript对象:按名称访问变量属性为字符串
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

您不需要它的功能 - 只需使用括号表示法

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 falsefoo['c']['q'] === false// returns falsefoo['c']['q'] === undefined// returns true


查看完整回答
反对 回复 2019-05-27
?
千万里不及你

TA贡献1784条经验 获得超9个赞

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中的代码和注释。


查看完整回答
反对 回复 2019-05-27
?
暮色呼如

TA贡献1853条经验 获得超9个赞

由于我通过上面的答案得到了我的项目帮助(我问了一个重复的问题并在这里提到了),我在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>


查看完整回答
反对 回复 2019-05-27
  • 3 回答
  • 0 关注
  • 1330 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信