alias de propiedad en JavaScript

Así que tengo una propiedad para la que quiero crear un alias.

var default_commands = {} default_commands['foo'] = "bar"; 

Entonces quiero un montón de elementos para alias a "foo"

Entonces si yo quería

 default_commands['fu'] = default_commands['foo']; default_commands['fuu'] = default_commands['foo']; 

¿Cómo podría hacer eso para no tener que escribir todo eso?

Lo intenté:

 default_commands['fu','fuu'] = default_commands['foo']; 

Pero eso no pareció funcionar.

 ["fu", "fuu"].forEach(function (alias) { default_commands[alias] = default_commands.foo; }); 

Esto no será un "alias" en el sentido en que la palabra generalmente invoca:

 default_commands.fu = 5; console.log(default_commands.foo); // still "bar", not 5. 

Pero no estaba claro a qué se refería en su pregunta.

Puedes hacerlo

 default_commands['fu'] = default_commands['fuu'] = default_commands['foo']; 

Solución que es probablemente la más flexible:

 function unalias (str) { // Use whatever logic you want to unalias the string. // One possible solution: var aliases = { "fu": "foo", "fuu": "foo" }; return aliases[str] !== undefined ? aliases[str] : str; } default_commands[unalias("fu")] = 7; default_commands[unalias("fuu")] = default_commands[unalias("foo")] + 3; alert(default_commands.foo); 

¿Por qué es esto más flexible? La lectura y escritura se "propagarán" correctamente.

La única forma de que realmente puedas usar alias en javascript es usar objects.

Los objects son accedidos en js como pointers:

Ejemplo:

 var myobj = {hello: "world"}; var myalias = myobj; myobj.hello = "goodbye"; console.log(myobj.hello); => // "goodbye" console.log(myalias.hello); => // "goodbye" 

No puede hacer un alias para una cadena, número, boolean, etc.

Ejemplo:

 var myint = 1; var myalias = myint; myint = 2; console.log(myint); => // 2 console.log(myalias); => // 1 

PD: Todos los types (como Array o RegExp) excepto Int, String, Boolean, null y undefined se tratan como Objetos.

Estás pensando en eso.

 var foo="foo",fu=foo,fuu=foo,default_commands = {}; default_commands[foo] = "bar"; console.log(default_commands[foo]); default_commands[fu] = "baz"; console.log(default_commands[foo]); default_commands[fuu] = "bing"; console.log(default_commands[foo]);