0

我有一个使用 requirejs 的应用程序,方法非常简单:

define([
    'jquery',
    'scriptone',
    'scripttwo'
], function ($,scriptone,scripttwo) {

for(var i=0, max=arguments.length; i<max; i++){

    // What is the name of the argument ????

}

});

在 for 循环中,我希望能够检索参数的名称,以便循环通过它将返回 '$'、'scriptone'、'scripttwo' ...

我知道这最终是关于函数和参数的问题,只是想知道在 RequireJS 的上下文中是否有一个简单/好的方法来实现这一点?

4

1 回答 1

1

您永远不需要在运行时知道变量名。你的申请有问题。

但是,你可以做到。获取函数的序列化,删除注释等,并解析参数列表。要获取函数本身,您可以使用 deprecatedarguments.callee但更好地获取对它的命名引用。所以你最终可能会得到

var fn = arguments.callee.toString();
var args = fn
  .replace(/\/\/.*?\n|\/\*.*?\*\//g, "") // remove comments
  .match(/^function\s*\S*\s*\(\s*(.+?)\s*\)/)[1] // match arguments list
  .split(/\s*,\s*/) // get argument names
for (var i=0; i<arguments.length; i++)
  console.log((args[i] || "unnamed argument")+":", arguments[i]);
于 2013-01-20T22:27:12.407 回答