1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptオブジェクト:変数プロパティに文字列で名前を付けてアクセスする【重複あり

2022-03-24 14:18:41

質問

以下のような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 (ただし null または false ):

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

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

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