Oliver Nassar

Javascript: Using object-references as keys in hashes

March 26, 2011

For some reason, I thought I could use objects as a reference/key in a JS hash. I thought it'd be useful for the key to be a reference to another object/reference since it would allow me to contain a lot of data in a hash while passing it around, but as you can see, the code below runs a little funky:

var a = function(){};
var t = {
    undefined: 's',
    a: 'oliver'
};
console.log(a);
console.log(t.a);
console.log(t[a]);

With a response:

function()
oliver
undefined

The latter two responses are the important ones; referencing t.a will give me the hash-value, whereas using the a object as a key produces an undefined reference.

It seems that using the a character in the t object's definition automatically casts it as a string.

Update

Looking a little more into this, it seems that keys for JS-hashes are always cast as string.

var a = {};
var b = {key: 'value'};
a[b] = 'oliver';
console.log(a[b]);
console.log(a[{}]);
console.log(a['[object Object]']);

The above code will console out the string oliver three times; the internal method for object-properties/attributes seems to cast every getter-request as a string before returning it.

Boooo.