jqueryマルチファンクション実行
3355 ワード
1、Array.prototype.slice.apply(arguments,[0/1/2])関数は、呼び出し関数から伝達されたパラメータ,[0]、すべて,[1]を切り取り、222,33,55を返す.[2]は、33,55を返します.
2、Function.apply(obj,args)関数,obj:このオブジェクトはFunctionクラスのthisオブジェクトに代わり,args:これは配列であり,パラメータとしてFunction(args->arguments)に渡される
var parent = {
method: function () {
console.log(this);
}
};
3、このjsはコレクションに値する
<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>