Search code examples
javascriptobjectproperties

Accessing an object property with a dynamically-computed name


I'm trying to access a property of an object using a dynamic name. Is this possible?

const something = { bar: "Foobar!" };
const foo = 'bar';
something.foo; // The idea is to access something.bar, getting "Foobar!"

Solution

  • There are two ways to access properties of an object:

    • Dot notation: something.bar
    • Bracket notation: something['bar']

    The value between the brackets can be any expression. Therefore, if the property name is stored in a variable, you have to use bracket notation:

    var something = {
      bar: 'foo'
    };
    var foo = 'bar';
    
    // both x = something[foo] and something[foo] = x work as expected
    console.log(something[foo]);
    console.log(something.bar)