亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 1383 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號