本帖最后由 ZiSheng 于 2011-03-21 12:31:04 编辑

解决方案 »

  1.   

    为什么arguments得先付给args,另外return this.replace函数里边的函数直接量里边的arguments参数包含的为什么分别是arguments[0]=[0],arguments[1]=0,不明白啊。
      

  2.   

    String.prototype.format。
    定义了string类型的一个原形方法
    则string类型的对象都可以使用format方法原形 arguments 具体看这个http://blog.csdn.net/KK3K2005/archive/2010/04/15/5489342.aspx
      

  3.   

    在调用this.replace(arg1,new function(){});的时候,这个函数直接量里边的arguments参数为什么第一个是[0],第二个参数是0。
      

  4.   

    链接中关于arguments的解释我看过了,明白,在我说的这个问题里边不明白,因为这里并没有调用类似你说的sum(1,2,3,5)
      

  5.   

    this.replace里作为参数的:function() {
                    alert(arguments[1]);
                    return args[arguments[1]];
    }
    它接受的参数是正则:/{(\d{1})}/g 所获取的匹配项,包括全匹配({0})和子匹配((\d{1})获取的匹配 0)。因此,arguments[0] = ‘{0}’;arguments[1] = ‘0’;而args指向的是foramt的参数列表,类似于一个数组的对象(var args = arguments;)。所以args[arguments[1]] = args[0],也就是传给foramt的第一个参数;
      

  6.   

    也就是说format函数里边的两个arguments是不一样的,第一个明白,是调用format方法的时候传递的m[i],第二个,在replace参数里边定义的function函数,它的arguments为什么arguments[0]=[0];arguments[1]=0;why????
      

  7.   

    写这个代码人是个大忽悠把这么简单明了的东西
    String.prototype.format = function() {
        return this.replace(/{\d}/g,arguments[0]);
    };写的上面这么复杂,这不是在整人啊
      

  8.   

    高人,谢谢.
    让我了解了,原来js的replace函数内部运行机制,难怪我们可以用$1这样来引用匹配
      

  9.   

    不是已经说了么
    argument[0]是指整个正则
    argument[1]是第一个括号里的东西
    ...依次类推