2013-01-20 142 views
0

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

+0

有一个requirejs.arguments在API中,从来没有尝试过,也许有趣。 – mpm

回答

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]); 
+0

我知道这似乎很奇怪,但我使用参数的名称来构建主对象。我实际上找到了一种更好的方式,使用数组并将数组索引与参数索引链接起来。 – Fluidbyte