JavaScript中的属性别名

时间:2011-12-08 01:16:12

标签: javascript

所以我有一个属性我想为别名制作别名。

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

但这似乎不起作用。

5 个答案:

答案 0 :(得分:4)

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

在单词通常调用的意义上,这不是“别名”:

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

但是你的问题并不清楚你的意思。

答案 1 :(得分:0)

你可以这样做

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

答案 2 :(得分:0)

可能最灵活的解决方案:

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

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

答案 3 :(得分:0)

在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 

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

答案 4 :(得分:0)

你在想它。

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