Access Javascript Object Variable Properties

Written by David Walsh on Wednesday, November 25, 2009


Not all javascript objects are as easy as MyObject.property. Sometimes you may want to access a property whose key is stored in a variable. Luckily accessing these properties is very easy.

Javascript Object Property Accessing Example

/* setting */
var myObject = {
	left : 30,
	top: 20
};
/* basic access */
var left = myObject.left; //OR
var left = myObject['left'];

/* accessing it or variables */
var mode = 'vertical';
var value = myObject[mode == 'horizontal' ? 'left' : 'top'];

You may use array-style syntax to access an object’s properties. The string within brackets returns the properties.


Follow via RSS Epic Discussion

Commenter Avatar November 25 / #

I’m a big fan of myObject[key] as its close to the PHP array syntax. Just personal preference really and it gives great flexibility and easy to test for.

Commenter Avatar November 25 / #

@Colin – I just love how object property keys and array indexes are treated as equal in Javascript. The closest to this coolness that PHP comes is in pseudo-property keys ($obj->$var_key)

Commenter Avatar November 25 / #
dev says:

never knew this method, very useful.

Commenter Avatar November 25 / #
Keith says:

@Chris – PHP’s ArrayObject class allows you to access properties using array syntax.

Commenter Avatar November 26 / #

@keith – huh…never knew that. Thanks! :D

Commenter Avatar November 30 / #
Timothy says:

It’s a good thing to point out that you can almost always avoid eval() by use of myObject['key'] reference. for example:

var myObject = {};

$H({
‘a’: 1,
‘b’: 2,
‘c’: 3
}).each(function(v, k) {
myObject[k] = v;
});

A lot of people think you have to do something like:

var myObject = {};

$H({
‘a’: 1,
‘b’: 2,
‘c’: 3
}).each(function(v, k) {
eval(‘myObject.’ + k + ‘ = ‘ + v);
});

Avoid eval! Eval is evil.

Commenter Avatar December 31 / #

@Timothy: While it is preferable to avoid eval in code that need not be written in that form, as you show, I would like to contest that eval is far from evil.

It’s a basic language construct upon which the entire functional programming paradigm can be built in languages that do not support it natively. Sometimes a problem is better expressed in said paradigm, but the language prevents you from properly exploiting it’s capabilities. This is one of the many ways eval *can* be used for the better of your programming speed, debug-ability and general style of programming.

So please, next time you wish to share your opinion on eval, try to think of the grand picture this language construct fits in, and don’t spread lies about otherwise finely crafted implementations thereof.

Be Heard!

I want to hear what you have to say! Share your comments and questions below.

Name*:
Email*:
Website:  


© David Walsh 2007-2010. Contact David Walsh. Powered by the remarkable MooTools javascript framework.