以下のようなJavaScriptオブジェクトがあるとします
var columns = {
left: true,
center : false,
right : false
}
そして、オブジェクトとプロパティ名の両方が渡される関数があります。
//should return false
var side = read_prop(columns, 'right');
の本体はどのread_prop(object, property)
ように見えるでしょうか?
ベストアンサー1
関数は必要ありません。括弧表記:
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}};
x
のプロパティには次のようにアクセスできますc
。
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