JavaScript中的属性别名

JavaScript中的属性别名,javascript,Javascript,因此,我有一个属性,我想使别名的 var default_commands = {} default_commands['foo'] = "bar"; 然后我想把一堆东西化名为“foo” 所以如果我想 default_commands['fu'] = default_commands['foo']; default_commands['fuu'] = default_commands['foo']; 我怎么能做到这一点,这样我就不用把这些都写出来了 我试过: default_commands

因此,我有一个属性,我想使别名的

var default_commands = {}
default_commands['foo'] = "bar";
然后我想把一堆东西化名为“foo”

所以如果我想

default_commands['fu'] = default_commands['foo'];
default_commands['fuu'] = default_commands['foo'];
我怎么能做到这一点,这样我就不用把这些都写出来了

我试过:

default_commands['fu','fuu'] = default_commands['foo'];
但这似乎不起作用

["fu", "fuu"].forEach(function (alias) {
    default_commands[alias] = default_commands.foo;
});
这不是word通常调用的“别名”:

default_commands.fu = 5;
console.log(default_commands.foo); // still "bar", not 5.
但不清楚你的问题是什么意思。

你可以这样做

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

可能是最灵活的解决方案:

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);

为什么这样更灵活?读和写将正确地“传播”。

在javascript中真正使用别名的唯一方法是使用对象

在类似js的指针中访问对象:

例如:

var myobj = {hello: "world"};
var myalias = myobj;

myobj.hello = "goodbye";

console.log(myobj.hello); => // "goodbye"
console.log(myalias.hello); => // "goodbye"
var myint = 1;
var myalias = myint;

myint = 2;

console.log(myint); => // 2
console.log(myalias); => // 1 
不能为字符串、数字、布尔值等创建别名

例如:

var myobj = {hello: "world"};
var myalias = myobj;

myobj.hello = "goodbye";

console.log(myobj.hello); => // "goodbye"
console.log(myalias.hello); => // "goodbye"
var myint = 1;
var myalias = myint;

myint = 2;

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

PD:除Int、String、Boolean、null和undefined之外的所有类型(如Array或RegExp)都被视为对象。

您考虑得太多了。

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]);

这样写起来就不那么痛苦了这似乎让它变得更痛苦了complicated@mcgrailm:我彻底更改了我的解决方案。这看起来正符合我的要求