我是一个名为Duckuino的项目的合作者,模块中加载了eval()
来执行另一个文件的内容,该文件的内部带有new Object()
,并且我想为项目创建别名,以避免像这样重复两次代码:
new Object({
commands: {
aVeryComplexCommand: function(WithParams) {
// Complex content
},
anAliasForTheCommand: //something which point to 'aVeryComplexCommand'
}
});
请注意,我不能将代码放在
new Object()
声明之后,因为它可能被eval()
误解,并且我不想修改加载模块的代码,因为别名是特定于模块的。预先感谢!
编辑:Pointy和Nathan P.的答案都在起作用,所以我将与其他协作者讨论该问题,并将使我们使用的答案有效。
最佳答案
您必须使用单独的语句:
new Object(function() {
var obj = {
commands: {
aComplexCommand: { ... }
}
};
obj.commands.alias = obj.commands.aComplexCommand;
return obj;
}());
那是有效的JavaScript,但是我不能说这是否会混淆您的
eval()
机制。