<script type="text/javascript">
        /** 格式化输入字符串**/
        jQuery.Format = function() {
            if (arguments.length == 0)
                return "";
            if (arguments.length == 1)
                return arguments[0];
            var reg = /{(\d+)?}/g;
            var args = arguments;
            var result = arguments[0].replace(reg, function($0, $1) {
                return args[parseInt($1) + 1];
            });
            return result;
        }
       // var a = "{0}--{1}";//为何把这里的注释去掉之后,下面闭包内的调用不会出错
       // alert(jQuery.Format(a, "a", "b"));
        
        (function(e) {            var s = "{0}{1}";
            alert(e.Format(s, "aa", "bb"));//这里调用为何会出错,如何实现?
          
        }
        )(jQuery);

解决方案 »

  1.   

    你没注意到很多jQuery插件都会在(function(){})(jQuery)之前加个;号么?
      /** 格式化输入字符串**/
            jQuery.Format = function() {
                if (arguments.length == 0)
                    return "";
                if (arguments.length == 1)
                    return arguments[0];
                var reg = /{(\d+)?}/g;
                var args = arguments;
                var result = arguments[0].replace(reg, function($0, $1) {
                    return args[parseInt($1) + 1];
                });
                return result;
            }
           // var a = "{0}--{1}";//为何把这里的注释去掉之后,下面闭包内的调用不会出错
           // alert(jQuery.Format(a, "a", "b"));
            
            ;(function(e) {            var s = "{0}{1}";
                alert(e.Format(s, "aa", "bb"));//这里调用为何会出错,如何实现?
              
            }
            )(jQuery);
    加什么+,~,-..也是可以的。
      

  2.   

    var jQuery = new Object;        
    /** 格式化输入字符串**/
            jQuery.Format = function() {
                if (arguments.length == 0)
                    return "";
                if (arguments.length == 1)
                    return arguments[0];
                var reg = /{(\d+)?}/g;
                var args = arguments;
                var result = arguments[0].replace(reg, function($0, $1) {
                    return args[parseInt($1) + 1];
                });
                return result;
            };       
    // var a = "{0}--{1}";//为何把这里的注释去掉之后,下面闭包内的调用不会出错
           // alert(jQuery.Format(a, "a", "b"));
            
            (function(e1) {            var s = "{0}{1}";
                alert(e1.Format(s, "aa", "bb"));//这里调用为何会出错,如何实现?
              
            }
            )(jQuery);