这可能是一个奇怪的问题,但我很好奇它是否可行。我有以下JavaScript函数:
function createPerson(args){
alert(args.firstName);
if (args.surname){
alert(args.surname);
}
}
然后是以下内容(例如将函数存储为字符串的场景):
var functionAsString = 'createPerson({ firstName: \'John\' });';
var convertFunction = new Function(functionAsString);
convertFunction();
按预期警告“John”。我想尝试做的是在执行之前为参数添加一个姓氏,就像这样(但不是垃圾!):
convertFunction.arguments.surname = 'Smith';
convertFunction();
我还没有找到一种方法来获取函数参数中的对象以便修改它。有谁知道这样的事情是否可能?谢谢!
答案 0 :(得分:2)
我认为这不可能。
仔细查看convertFunction
变量:
var functionAsString = 'createPerson({ firstName: \'John\' });';
var convertFunction = new Function(functionAsString);
console.log(convertFunction)
// function anonymous() {
// createPerson({ firstName: 'John' });
// }
正如您所看到的,convertFunction
不是您的函数直接 - 它是一个匿名包装器,它不接受任何参数并使用预定义的参数调用您的函数。