/** * 参数个数对应 各自处理的函数 不指定 则执行 默认函数 * [ * 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 模拟重载
时间: 2024-10-22 22:43:55