这可能是一个奇怪的问题,但我很好奇它是否可行。我具有以下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();


我还没有找到一种方法来获取函数参数中的对象以进行修改。有人知道这样的事情是否可能吗?谢谢!

最佳答案

我认为这是不可能的。

仔细看看convertFunction变量:

var functionAsString = 'createPerson({ firstName: \'John\' });';
var convertFunction = new Function(functionAsString);
console.log(convertFunction)
// function anonymous() {
// createPerson({ firstName: 'John' });
// }


如您所见,convertFunction并非直接用于您的函数-它是一个匿名包装器,不包含任何参数,而是使用预定义的参数来调用您的函数。

08-25 12:31