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>
1686

被折叠的 条评论
为什么被折叠?



