所以我有一个属性我想为别名制作别名。
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'];
但这似乎不起作用。
答案 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]);