码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 模拟重载

时间:2014-08-08 17:48:56      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   io   ar   cti   div   

 

 

/**
  * 参数个数对应 各自处理的函数 不指定 则执行 默认函数
  * [
  *    d       : function (             ) {}
  *  , 0       : function (             ) {}
  *  , 1       : function ( a           ) {}
  *  , 2       : function ( a, b        ) {}
  *  , 3       : function ( a, b , c    ) {}
  *  , 4       : function ( a, b , c, d ) {}
  * ]
 */

! function ()
  {
    var
      _reload = ( function ()
      {
        var
          _default = function () {}             //  设置默认函数

          ; return function ( funcs, _def )
            {
              ; funcs       = funcs.slice()     //  配置处理函数 slice 防外部修改
              ; funcs["d"]  = _def || _default  //  配置默认函数

              ; return function ()
                {
                  ; return ( funcs[ arguments.length ] || funcs.d ).apply( this, arguments )
                }
            }
      }())

    , test    = _reload(
      [
          function (         ) { return 0           }
        , function ( x       ) { return x * x       }
        , function ( x, y    ) { return x / y       }
        , function ( x, y, z ) { return x * y * z   }
      ] , function (         ) { return ‘error‘     })
      //
    , obj     =
      {
          name : ‘test‘
        , test : _reload(
          [
              function (         ) { return this.name       }
            ,,
            , function ( x, y, z ) { return this.name + x + y + z   }
          ])
      }
      //
    ; console.log( "test", test(            ))
    ; console.log( "test", test( 9          ))
    ; console.log( "test", test( 9, 8       ))
    ; console.log( "test", test( 9, 8, 7    ))
    ; console.log( "test", test( 9, 8, 7, 6 ))
    ; console.log( "------------------------")
    ; console.log( "obj.test", obj.test(            ))
    ; console.log( "obj.test", obj.test( 9          ))
    ; console.log( "obj.test", obj.test( 9, 8       ))
    ; console.log( "obj.test", obj.test( 9, 8, 7    ))
    ; console.log( "obj.test", obj.test( 9, 8, 7, 6 ))

  }()

  

 

JavaScript 模拟重载,布布扣,bubuko.com

JavaScript 模拟重载

标签:style   blog   color   java   io   ar   cti   div   

原文地址:http://www.cnblogs.com/doop/p/3899744.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!