jqueryマルチファンクション実行

3355 ワード

1、Array.prototype.slice.apply(arguments,[0/1/2])関数は、呼び出し関数から伝達されたパラメータ,[0]、すべて,[1]を切り取り、222,33,55を返す.[2]は、33,55を返します.
 
<script type="text/javascript">
        function test(){  
	 //           
	  var args = Array.prototype.slice.apply(arguments,[1]);  
	 //alert(args);  
	} 
	test(11,222,33,55);
</script>

2、Function.apply(obj,args)関数,obj:このオブジェクトはFunctionクラスのthisオブジェクトに代わり,args:これは配列であり,パラメータとしてFunction(args->arguments)に渡される
<script type="text/javascript">

var parent = { 
    method: function () { 
        console.log(this); 
    } 
}; 

	 var arr = {};
	 arr.name = function(name){
	 	console.log('name:'+name);
	 };
	 
	 function info(fun){
	 	var args = Array.prototype.slice.apply(arguments,[1]);
	 	fun.apply(this,args);
	 }
	 info(arr['name'],'stelin');
</script>
 
 
3、このjsはコレクションに値する
<script type="text/javascript">
var _func = {};
function inits(){
	console.log('inits');
}
function a(){
	console.log('aa');
}
function addFunctionItem(item,fun){
	if(!_func[item]){
		_func[item] = [];
	}
	_func[item] = $.merge(_func[item],[fun]);//[fun]          
}
function operateFuncs(item){
	if(!_func[item]){
		_func[item] = [];
	}
	args = Array.prototype.slice.apply(arguments, [1]); //       [1,2] '[1]'    1       (0  )
	alert(args);
	$.each(_func[item],function(){
		this.apply(this,args);//       ,   ,    ,          ,     
	});
}
var _theme = function(fun) {
     var args = Array.prototype.slice.apply(arguments, [1]);
     return (_theme[fun] || _theme.prototype[fun]).apply(this, args);
  }
_theme.prototype = {};


_theme.prototype.loginLink = function (username){
	return 'your name'+username;
}
_theme.prototype.logout = function (username){
	return 'logout your'+username;
}


addFunctionItem('func',inits()); //     ,    _func    [    ]
console.log('1:'+_func['func']);
addFunctionItem('func',a());
console.log('2:'+_func['func']);

//      
addFunctionItem('func',function after(name,age){console.log('after_log-'+name+'_'+age)});////     ,    _func     [     ]
addFunctionItem('func',function out(name,age){console.log('out_log-'+name+'_'+age)});
console.log('after:'+_func['func']);

var args = {};
operateFuncs('func',1,2); //             

_theme.prototype.loginLink = function (username){
	return 'your name tow '+username; //    
}

_theme.prototype.logout = function (username){
	return 'logout your two '+username;
}
var name = _theme('loginLink','stelin');
console.log(name);
console.log(_theme('logout','stelin'));
</script>