JavaScript object: access variable property by name as string

javascript, object

Solution

You don't need a function for it - simply use the bracket notation:

var side = columns['right'];

This is equal to dot notation, `var side = columns.right;`, except the fact that `right` could also come from a variable, function return value, etc., when using bracket notation.

If you NEED a function for it, here it is:

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

To answer some of the comments below that aren't directly related to the original question, nested objects can be referenced through multiple brackets. If you have a nested object like so:

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

you can access property `x` of `c` as follows:

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

If a property is undefined, an attempt to reference it will return `undefined` (not `null` or `false`):

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

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

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

Problem

If I have a javascript object that looks like below ``` var columns = { left: true, center : false, right : false } ``` and I have a function that is passed both the object, and a property name like so ``` //should return false var side = read_prop(columns, 'right'); ``` what would the body of `read_prop(object, property)` look like?

Original source

Related problems