如function aaa(a1,a2) 怎么知道第二个参数的名字是a2

解决方案 »

  1.   

    aaa.toString() 下面就是处理字符串了... 找到括号里的内容 然后找到参数名...
      

  2.   

    老大,JS获取参数名称?没听错吧!
    你所需要的只是传递的数据值,对于参数名称的要求还是第一回听说。
    function aaa(a1,a2){
      value1 = a1;
      value2 = a2;
    }
      

  3.   


    var s = f1.toString();
    var a = s.split(")");
    a = a[0].split(",");
    alert(a[1]);
      

  4.   

    function aaa(a1,a2){ 
      value1 = a1.tostring()
      value2 = a2.tostring()
    } 试试。
    如果仅仅用  value2 = a2 那得到的仅仅是参数内容
      

  5.   

    var s = f1.toString();
    var a = s.split(")");
    a = a[0].split(",");
    alert(a[1]);
      

  6.   

    function aaa(a1,a2)
    {
    alert(arguments[0]);
    }
    var fn=aaa.toString();
    var args=fn.substring(fn.indexOf('(')+1,fn.indexOf(')')).split(',');
    for(var i in args)
    {
      document.write(args[i] +"<br>");
    }
      

  7.   

    没必要获得这个名字吧。在函数外部,使用Function的apply方法,传入的就是一个Array。在函数内部,使用arguments获取的也是一个Array。也就是说,无论在函数内部还是外部,你都可以把所有参数看做一个Array来处理,没必要知道具体名称。
      

  8.   

    我知道名字当然有用处。另外楼上几位fish好像没搞清楚名字和值的区别。实际情况是这样的,举个例子:
    创建一个input对象
    function createInput(className,name,value,maxLength)
    {
        var obj = document.createElement("input");
        //接下来给对象赋属性值 可以通过obj.className = className; obj.name = name;这种方式赋值。
        //大家注意到参数名和对象属性名实际上是一样的,这样就可以obj["className"] = className;这种方式来赋值,使用循环。
        var numargs = arguments.length; // 实际传递的参数
        for(var i = 0; i < numargs; i++)
        {
            if(arguments[i] != null)
            {
                  obj[目前还取不到的参数名,也就是obj的属性] = arguments[i];
            }
        }
    }
    //好处是当多加一个id属性时只用改变createInput(className,name,value,maxLength,id)
    //调用时多传一个参数就行了,函数体不用改。
      

  9.   

    obj.id = arguments[i]; 
    或者setAttribute("id",id);
      

  10.   

    这样吗?<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="JS_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script language="javascript">
        function ShowStr(a1,a2)
        {
          alert(a1);
          alert(a2);
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <input id="Button1" type="button" value="button" onclick="ShowStr('aa','bb')" />
        </div>
        </form>
    </body>
    </html>
      

  11.   

     没有必要搞那么复杂,其实参数名也作为传递参数就很好解决了。
    也就是说,参数名和参数值 一对一对的传进来。js 可能没有KeyValuepair和list 或者Dictionary,就用个2维数组好了。function createInput(array[][2] parameters) 
    {
     var obj = document.createElement("input"); 
     for(var i=0;i<array.length;i++)
     {
         //添加属性名和属性值
         obj.setAttribute(parameters[i][0],parameters[i][1]); 
     }
    }
    外面调用的时候也不需要修改函数的参数,随便自己设置多少个属性,如果把tag标签也放到参数里,就可以创建任意html组件和初始化任意属性值了。//好处是当多加一个id属性时只用改变createInput(className,name,value,maxLength,id) 
    //调用时多传一个参数就行了,函数体不用改------------  多加一个属性的时候 还要修改函数,这个函数只能适应针对某个特列,这还叫方便吗
      

  12.   

    其实参数名也作为传递参数就很好解决了。 
    也就是说,参数名和参数值 一对一对的传进来。js 可能没有KeyValuepair和list 或者Dictionary,就用个2维数组好了。         --------------------------------------  前面说法稍微纠正一下,应该是把属性名和属性值都作为参数传递进来
      

  13.   


    像你这样搞,我创建2维数组的功夫对象都创建好了,还用调函数吗?
    var obj = document.createElement("input"); 
    obj.name = "name";
    obj.id = "id";
    这样不比你创建2维数组简单,封装的意义何在?你还跟我谈方便?