RequireJS - 获取参数名称

时间:2013-01-20 20:05:46

标签: javascript arguments requirejs

我有一个使用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的上下文中是否有一个简单/好的方法来实现它?

1 个答案:

答案 0 :(得分:1)

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

然而,你可以做到。获取serialisation of the function,删除注释等,并解析参数列表。要获得函数本身,您可以使用已弃用的arguments.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]);