我有一个使用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 :(得分: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]);