从从字符串创建的函数中获取参数列表

get list of arguments from a function created from a string

本文关键字:获取 参数 列表 函数 字符串 创建      更新时间:2023-09-26

这可能是一个奇怪的问题,但我很好奇它是否可行。我有以下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不是您直接使用的函数——它是一个匿名包装器,不接受任何参数,并使用预定义的参数调用您的函数。